您的位置 首页 发布

STM32裸机开发—外部中止

a.初始化IO口作为输入这一步需要设置你要作为外部中断输入的IO口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候…

a. 初始化IO口作为输入

这一步需求设置你要作为外部中止输入的IO口的状况,能够设置为上拉/下拉输入,也能够设置为浮空输入,但浮空的时分外部硬件必定要上拉或下拉。不然或许导致中止不停地被触发。在搅扰较大的当地,就算运用了上拉/下拉,也主张在外部硬件上设置上拉/下拉,这样能够在必定程度上避免外部搅扰带来的影响。
*RCC_APB2ENR=0x00000019;//翻开portb和portc的时钟和复用时钟
*PORTA_CRL=0x44444844;//设置PA2口为上拉/下拉输入形式
咱们还需求驱动液晶屏所以一起翻开了PORTB和PORTC的时钟。
b. 舱位IO口复用时钟,设置IO口与中止线的映射联系
STM32的IO口与中止线的对应联系需求装备外部中止装备寄存器EXTICR,这样咱们要先舱位复用时钟,然后装备IO口与中止线的对应联系。才干把外部中止与中止线连接起来。从图中看到一共有19条中止线(EXTIx),几号端口便是几号中止线。这儿PA2明显便是EXTI2线。
*AFIO_EXTICR1=0x00000000;//翻开PA2口的复用设置
c. 舱位与该IO口相对的线上中止事情,设置触发条件
这一步,咱们要装备中止发生的条件,STM32能够装备成上升沿触发,下降沿触发,或许恣意电平改变触发,可是不能装备成高电平和低电平触发。这儿要根据自己的实际情况来装备。一起要舱位中止线上的中止,这儿需求留意的是,假如运用外部中止,并设置该中止的EMR位的话,会引起软件仿真上不能转到中止,而硬件上是能够的。而不设置EMR,软件仿真就能够进入中止服务函数,而且硬件上也是能够的。主张不要装备EMR位。从图中能够看到,要进入NVIC interrupt controller必需要设置中止屏蔽寄存器。挂起恳求寄存器从现在的了解来看应该是在硬件中止的时分接到中止事情就主动置1,中止被处理了就置0,能够经过写该寄存器来完成软中止,故在这儿没有进行设置。
*EXTI_IMR=0x00000004;//翻开PA2的中止屏蔽
*EXTI_FTSR=0x00000004;//设置为下降沿触发
d. 装备中止分组(NVIC),并使能中止
这一步,咱们便是装备中止的分组,以及使能,关于STM32来说,只要装备了NVIC的设置,并舱位才干被碑文,不然是不会碑文到中止服务函数晒干去的。关于裸机开发来说,ST半导体的STM32参考手册中没有标明NVIC寄存器的地址,如下图,直接标成了reserved。事实上NVIC寄存器已经是CM3的私房外设了。经过看论坛上的评论知道了在ARM发布的Cortex-M3 Technical Reference Manual (r2p0)中能找到。NVIC寄存器组主要有Interrupt Set-Enable Registers,Interrupt Clear-Enable Registers,Interrupt Set-Pending Register,Interrupt Clear-Pending Register,Active Bit Register,Interrupt Priority Registers。这儿要点要关怀的是Interrupt Set-Enable Registers,由于它是用来设置中止通道使能的,不设置的话中止服务函数不会呼应。它的地址是0xE000E100。EXTI2的中止向量号为8(查询中止向量表),所以代码如下:
*NV%&&&&&%_ISER=0x00000100;//翻开EXTI线2中止

e. 写中止服务函数
举个比如:
void EXTI2_IRQHandler(void)
{
drawwin8();
}
中止服务函数的格局大约便是 void XXXX(中止称号)_IRQHandler()。中止称号直接查手册上的中止向量表。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/264736.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部