打印
[牛人杂谈]

新唐Cortex—M0学习之外部中断与定时器中断

[复制链接]
1041|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cowboy2014|  楼主 | 2016-5-4 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这次的项目是红外模块,即实现捕捉红外信号,解码,发射红外信号,让开发板学习红外信号!天下大事,必作于细,学习不是一朝一夕能够解决的事情,所以第一周的任务就是熟悉新唐Cortex—M051这个开发板,我手上的是最小系统,只有一个M0的内核和引脚,其它什么都没有。

对一开始学习嵌入式的时候,对一些概念觉得很奇怪,比如设置晶振,下降沿触发,其实嵌入式就是一个微小型的计算机,而晶振就和我们的CPU一样,要发出信号让器件进行工作,通俗一点,晶振就像一个动力源,没有动力,机器怎么工作呢?而晶振发出的就是一个时段高电平,一个时段低电平,我们常说CPU是3.0GHZ的,它的意思就是CPU在1秒内发出一个时段高电平,一个时段低电平,这个组合持续3G(即三乘以十的9次方)下,但是嵌入式里面的CPU达不到这个速度,我本次用的晶振是12MHZ的(十二乘以十的六次方),你可以想象一下,速度是怎么样的!

言归正传,外部中断根据例子程序很好改,定时器中断根据例程也可以实现,我用外部中断是为了捕获红外信号,如果用查询的话效率太低,大家懂的,而定时器的作用就是实现延迟,如果用软件延迟(即套上3,4个for循环),效率低而且准确度不高。但是我把外部中断和定时器中断和到一起就出问题了,在外部中断的服务程序里面,并不执行定时器中断...这个开发板是可以中断嵌套的,而我疏忽的地方在哪里呢?

是两个中断的优先级,在寄存器里面,默认所有中断的优先级都是0(即最高优先级),如果要实现中断嵌套,必须为要嵌套的中断制定优先级!

用了一周时间,总算把解码算法搞出来,并且调试对了,并且认识了我们实验室的师兄师姐们,他们人都很好,很容易相处!
沙发
goodluck09876| | 2016-7-2 16:50 | 只看该作者
楼主 可以放料吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

821

帖子

5

粉丝