
exti_getflagstatus只是纯粹读取中断标志位的状态,但是不一定会响应中断(ext_imr寄存器对该中断进行屏蔽);而exti_getitstatus除了读取中断标志位,还查看ext_imr寄存器是否对该中断进行屏蔽,在中断挂起&没有屏蔽的情况下就会响应中断。仔细看看代码就知道区别了
flagstatus
exti_getflagstatus(uint32_t
exti_line)
{
flagstatus
bitstatus
=
reset;
/
check
the
parameters
/
assert_param(is_get_exti_line(exti_line));
if
((exti->pr
&
exti_line)
!=
(uint32_t)reset)
{
bitstatus
=
set;
}
else
{
bitstatus
=
reset;
}
return
bitstatus;
}
itstatus
exti_getitstatus(uint32_t
exti_line)
{
itstatus
bitstatus
=
reset;
uint32_t
enablestatus
=
0;
/
check
the
parameters
/
assert_param(is_get_exti_line(exti_line));
enablestatus
=
exti->imr
&
exti_line;
if
(((exti->pr
&
exti_line)
!=
(uint32_t)reset)
&&
(enablestatus
!=
(uint32_t)reset))
{
bitstatus
=
set;
}
else
{
bitstatus
=
reset;
}
return
bitstatus;
}
我也是这样过来的,也是电气专业,51到stm32入门时间大约一个月左右,都是利用课余时间来学习和调试。首先你要知道stm32和51的区别,是定位在高端工控mcu,比51有更丰富的接口和资源,但是还远没有达到arm9以上的能够运行片上嵌入式系统(比如:安卓,wince)的一种处理器。但是做个彩屏MP3加电子书还是完全可以的。
首先了解一遍处理器架构,stm32是arm的cortex M3核,跑72M,但是架构先进代码运行速度,比51快100倍左右吧。有那些时钟,定时器,中断,接口,看一遍了解。
然后学习GPIO,就是如何 *** 作引脚高低电平,点流水灯。注意使用库函数! 很方便的,ST公司已经把代码写好了,不用手动去 *** 作寄存器。更不要想着用汇编了。库函数用30以上的新库,去下载一份库函数使用手册的翻译版。这样你就能看懂开发板配来的例子了。看不懂的c语言语法赶快去百度查一下,很简单的。官方库函数采用规范的宏定义和指针,写的非常好。
流水灯点起来,在去学习STM32芯片配的AD。串口。定时器,PWM。很快的。
慢慢移植你51上的例子到stm32,是一个很有趣的过程哦。
如果还想进一步,就可以把ucos实时系统移植到stm32上,学习一下嵌入式系统,很有挑战性。系统的好处是可以同时执行多任务,不再是一个while(1)大循环了,是一个任务一个大循环,同时运行,爽啊。
记住手上带好stm32库函数使用手册翻译版,stm32不完全手册。这个两个pdf。
全部手动输入,加分哦。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)