« 上一篇下一篇 »

日常工作总结-MCU相关

1、Systick不是中断,而是异常

Systick无论在CM3还是CM4内核里面,都不属于外设中断,它属于内核里面的中断,官方的术语是异常,它的中断向量号为负,-1,所以,常规的关中断的函数如NVIC_Deinit(),没有办法关闭Systick的异常响应,而只能关闭序号为0-240的普通中断响应。这个要特别注意,尤其是涉及到bootloader的开发,程序跳转操作。

那如果关闭Systick的异常响应呢,通过ST的F4的内核手册,可以得知,Systick的CTRL寄存器的低2位全部置0,即可以关闭Systick的计数并关闭Systick的异常请求触发。

2、MCU复位后IO口会回到默认状态

无论是硬复位还是代码上的软复位,IO口都会回到默认状态,STM32 F4的默认状态是输入浮空,即不对外输出电平,也即不会影响到外部电路的电平,MCU复位后外部电路的状态由其本身决定。其实说白了,比如之前是推挽输出高电平,但是现在软复位了,IO口就没法保持高电平输出的状态了,需要重新配置才行。这个对某些电路可能有影响,比如MUTE是需要MCU给高电平,但是一旦MCU复位,即使复位后马上配置,中间也会有一小段时间对外部电路的MUTE会失效,这个如果是在音频产品上,表现为瞬间的冲激声。