重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 9308|回复: 14
打印 上一主题 下一主题

开个贴,不定时更新对单片机编程的理解

[复制链接]

12

主题

66

帖子

538

积分

高级会员

Rank: 4

积分
538
QQ
跳转到指定楼层
楼主
发表于 2016-3-23 10:01:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
发现在群里交流的很多,上论坛交流的人还是少啊,来论坛里水的人更少。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

12

主题

66

帖子

538

积分

高级会员

Rank: 4

积分
538
QQ
15#
 楼主| 发表于 2016-5-10 09:09:40 | 只看该作者
程浥 发表于 2016-5-7 16:51
东西是这样摸索过来的,要是我们一开始就想好了就好了。

我也想啊。

继续啊                                                  
回复 支持 反对

使用道具 举报

16

主题

75

帖子

863

积分

版主

Rank: 7Rank: 7Rank: 7

积分
863
QQ
14#
发表于 2016-5-7 16:51:45 | 只看该作者
程浥 发表于 2016-5-7 16:15
但是Delay相当占系统时间,白白浪费资源你得被骂死,于是我们要采用定时器和中断:

暂时就定个10ms中 ...

东西是这样摸索过来的,要是我们一开始就想好了就好了。

我也想啊。

那么问题就来了。

我们一开始的任务是写一个led驱动的代码。
就LED灯这个对象,我们要分析下它的属性。

面向对象
回复 支持 反对

使用道具 举报

16

主题

75

帖子

863

积分

版主

Rank: 7Rank: 7Rank: 7

积分
863
QQ
13#
发表于 2016-5-7 16:15:16 | 只看该作者
程浥 发表于 2016-5-7 15:53
吹逼...
假如给我们一个很小的任务,写一颗LED灯的驱动程序,你会怎么做呢?

但是Delay相当占系统时间,白白浪费资源你得被骂死,于是我们要采用定时器和中断:

暂时就定个10ms中断好了:

中断不能带参数,看来得用全局变量了。

ontime ,offtime,alltime.来来来,我们给它初始化一下.
[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode
void LEDInit(u32 ontime ,u32 offtime,u32 alltime)
{
	static u32 m_ontime,m_offtime,m_alltime;
	//统统滴 读进来
}


下面就是写中断处理了:
[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode
void __Timer0Int(void)
{
	//10ms重载
	LEDProcess();
}
void LEDProcess(void)
{
	static u32 allcount,ncount;
	m_count+=10;
	if(allcount>alltime)
	{
		//任务结束
		//看起来这里还要设个标志
	}
	else
	{
		//燥起来
		ncount+=10;
		if(ncount>m_ontime)
		{
			LED_ON;
			ncount=0;
			//看起来还要设个交替的标志
		}
		else
		{
			LED_OFF;
			ncount=0;
		}
	}
}
void LEDInit(u32 ontime ,u32 offtime,u32 alltime)
{
	static u32 m_ontime,m_offtime,m_alltime;
	//统统滴 读进来
}

回复 支持 反对

使用道具 举报

16

主题

75

帖子

863

积分

版主

Rank: 7Rank: 7Rank: 7

积分
863
QQ
12#
发表于 2016-5-7 15:53:44 | 只看该作者
张金权-11级电子 发表于 2016-3-28 12:08
期待其他理解和阐释,,,

吹逼...
假如给我们一个很小的任务,写一颗LED灯的驱动程序,你会怎么做呢?

按照常规思想就开始Delay了,嗯!先闪:

[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode
LED_Display(N)
{
    LED1=~LED1;
    Delay(N秒);
}


这么闪还没意思,要想怎么闪就怎么闪,频率自己定,总时间自己定,还要有闪的时间和灭的时间不一样,于是有了:
[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode
LED_Display(ontime,offtime,alltime)
{
    int n;
   n=alltime/(ontime+offtime);
   for(i=0;i<n;i++)
    {
        LED_ON;
        Delay(ontime);
        LED_OFF;
        Delay(offtime);
    }
}


回复 支持 反对

使用道具 举报

12

主题

66

帖子

538

积分

高级会员

Rank: 4

积分
538
QQ
11#
 楼主| 发表于 2016-4-8 18:24:18 | 只看该作者
最近打算研究pixhawk飞控,但是这个飞控对windows环境下的编译支持不怎么好,搭建个开发环境花了好大功夫,这才感觉到keil  MDK有多么好用
回复 支持 反对

使用道具 举报

12

主题

66

帖子

538

积分

高级会员

Rank: 4

积分
538
QQ
10#
 楼主| 发表于 2016-3-28 12:08:51 | 只看该作者
张金权-11级电子 发表于 2016-3-28 12:08
综上,就是从比较宽泛的概念上来讲,单片机就是嵌入式,同时结合硬件和软件的定义上来讲,跑了OS的单片机 ...

期待其他理解和阐释,,,
回复 支持 反对

使用道具 举报

12

主题

66

帖子

538

积分

高级会员

Rank: 4

积分
538
QQ
9#
 楼主| 发表于 2016-3-28 12:08:21 | 只看该作者
张金权-11级电子 发表于 2016-3-28 12:05
看了:“关于嵌入式系统--献给热爱此道的初学者们”这篇文章,按照这篇文章的理解,从硬件上来讲,现在 ...

综上,就是从比较宽泛的概念上来讲,单片机就是嵌入式,同时结合硬件和软件的定义上来讲,跑了OS的单片机才属于嵌入式。大家继续发表高见啊。
回复 支持 反对

使用道具 举报

12

主题

66

帖子

538

积分

高级会员

Rank: 4

积分
538
QQ
8#
 楼主| 发表于 2016-3-28 12:05:17 | 只看该作者
张金权-11级电子 发表于 2016-3-28 11:51
再来讨论一个问题,单片机和嵌入式的区别?由于嵌入式这个概念比较模糊,并没有一个准确的定义,有些人认为 ...

看了:“关于嵌入式系统--献给热爱此道的初学者们”这篇文章,按照这篇文章的理解,从硬件上来讲,现在的单片机的片上外设如串口,ADC,比较器等都属于把一些IC具备的功能集成到了单芯片的处理器上,那么很多单片机就是嵌入式产品,从软件上来讲,就是把应用程序嵌入到了操作系统的内核程序中,那么就是跑了OS的单片机才属于嵌入式。
回复 支持 反对

使用道具 举报

12

主题

66

帖子

538

积分

高级会员

Rank: 4

积分
538
QQ
7#
 楼主| 发表于 2016-3-28 11:51:52 | 只看该作者
再来讨论一个问题,单片机和嵌入式的区别?由于嵌入式这个概念比较模糊,并没有一个准确的定义,有些人认为,运行了操作系统的才属于嵌入式,有些人认为,MCU/DSP/FPGA都属于嵌入式,那么嵌入式究竟是个什么含义?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-12-22 22:30 , Processed in 4.110834 second(s), 29 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表