#STM32# 学习日志-第4天

学习了4天的STM32,用的是野火的板子,资料是野火的零死角玩转系列,做点学习小总结,讲讲后面学习新外设的思路:

1、ST库的使用流程:配置时钟 -> 初始化结构体赋值 -> 初始化。

      在操作一个不熟悉的外设时,需要多看官方帮助文件和参考手册,但最重要最有效的手段应该是在网络上搜索该如何使用该外设,工作原理,工作模式等,但不需要具体到源码。在配置时钟的时候看参考手册的总线架构,确定所使用的外设是挂靠在哪条总线下的,以此去调用相应的rcc库函数。初始化结构体赋值的时候,先看帮助文件,基本上可以见名识字来赋值。另外,参考例程源码也是一个非常好的方式,参考源码时候要注意抓重点,尽快找到核心函数,忽略具体实现具体端口等,提高效率。

2、库函数的使用:数据输入输出,标志位的查询和设置

      配置好库的工作参数之后,就需要使用库函数进行操作了。这个时候先不要急着去实现你想要的功能,先到库帮助文件里面去整体浏览一下库的各个函数,对整体有个了解。这里需要区分一下的是事件标志(FlagStatus)和中断标志(ITStatus),简单来说如果屏蔽了中断的话,发生了事件但不产生中断,这种情况事件标志置位但中断标志位不变。另外,在清除标志位的时候,中断内使用xxx_ClearITPendingBit(),非中断时采用xxx_ClearFlag()会更为严谨一些。 在对标志位进行置位和清除操作时,也可以考虑直接操作寄存器,有时候需要直接操作管脚的话会比较方便。

     PS:这里的事件标志和中断标志都是硬件上的标志位,在软件设计里面常用的还有软件上定义的标志位:即在程序里面定义一个布尔变量来表示状态。需要确定工作状态时,不要死脑筋只知道去查询相应的硬件标志,有时候转变一下思路,设置一个软件标志位反而效率更高,编程简单,程序易懂。

3、中断服务程序是否需要清除标志位。中断服务里面除了需要写相应的中断服务之外,为了下次能正常中断,对中断的设置也是必不可少的。一般来说都是需要对中断标志位进行清除的,具体需要清除哪些标志位可以参考例程代码。

4、单片机开发编程里面,有很多是位操作运算。常见的位操作运算也需要补习。

     1) a  &=  ~ (<< 6) :将a的第七位(bit6)清 0,其它位不变。  &=  ~ 

     2) a  |=  (1 << 6):    将 a的第七位(bit6)置 1,其它位不变。 |=  

     3)a  ^= (1 << 6): 将 a的第七位(bit6)取反,其他位不变。  ^= 

你可能感兴趣的:(STM32,嵌入式,单片机)