
【学习必备】每天学习STM32小技巧-3 前一篇已分享了10个小技巧,今天继续为大家分享10个小技巧:![]() / J o" z; [( {' @1 M6 X) s 技巧22:上电初始化后AIRC初始化为0,为16个抢先式优先级,但是由于所有的外部通道中断优先级控制字PRI_n为0,所以抢先式优先级相同,此时就不能嵌套了4 _9 Q7 E9 w4 p& y: A0 b3 i( v6 V , B7 D, i: p9 c8 U: Y" _0 l 技巧23:NVI中有ISER[2](Interrupt Set-Enable Registers),ICER[2](Interrupt Clear-Enable Registers),ISPR[2](Interrupt Set-Pending Registers),ICPR[2](Interrupt Clear-Pending Registers),IABR[2](Active Bit Registers),IPR[15](InterruptPriority Registers)定义。其中ISER和ICER分别为中断使能和中断失能寄存器,都是写1来使能/失能中断的。为什么写1?为什么不采用一个寄存器而用两个寄存器来表示中断使能/失能状态?由于硬件,写0比较复杂,并且可能造成其他位的状态改变,所以用1来表示打开或者关断是比较合理的 E; }1 d& e* C. \ . a! U2 [' v6 Y' ?, o; C6 X 技巧24:中断标志位需要手动清除2 W# `5 b$ K5 U. H5 }9 _/ I 技巧25:配置外围器件的一般步骤:8 m1 g; \! ^6 f: z0 |* s& q* p; `! ] ·打开端口时钟 ·定义初始化结构体并初始化" `, v! t+ K8 E ·调用( V4 ?- h5 P O& h: C3 D; g8 t6 x 技巧26:串口的奇偶校验:如果是奇偶校验,那么USART_InitStructure.USART_WordLength= USART_WordLength_9b;这个数据的长度必须设定为9位! 4 g3 E2 a' u M; v7 A( U# q 技巧27:ADC的规则组可以自定义转换通道顺序和转换的通道个数。在实际应用中,有时候希望有一些特别的通道具有很高的优先权,需要在规则组进行转换的时候强制打断,进行另一个通道的转换,这样一组通道,叫做注入组。 1 }' d- Q% K, n) y H1 F! _! D 技巧28:定时器的输出比较模式:Timing(冻结,什么都不做,普通定时),Active(OCxREF输出高电平有效),Inactive(OCxREF输出低电平),Toggle(比较成功后翻转电平)。 - J# C2 ^8 [7 Z 0 n& ?9 S' U1 M 技巧29:STM32的定时器从0开始计数,满足一些条件,给出标志位(比如匹配成功、时间更新、溢出等)然后从0开始计数。这一点和51不同。 3 |% p- q2 j6 Z7 F2 t2 Y$ | 技巧30:OCx=OCxREF+极性4 [) P, f; F7 { ) s- i, E6 j, f: f6 J0 ^9 A ![]() 论坛还未大家准备诸多STM32系列开发经验:) _% {8 v" U1 a3 }# G9 r! @ |