2020-01-10 19:45发布
RudeBoy 发表于 2016-8-2 17:24 好像可以了,为毛啊
RudeBoy 发表于 2016-8-2 18:39 恩恩 明白了,还真是头一次遇到这个问题
最多设置5个标签!
1、你需要去搜索引擎里面,搜一下 volatile 的用法
2、这里的原因是:编译器优化掉了,认为 (ticks[1] != 0) 这个条件永远成立,没意识 ticks[1] 会被改变,因为在 C 编译器看来:ISR 并不会显式的被 C 编译器调用(ISR 是隐式的调用,由硬件中断触发 MCU 调用的)
可以看看stm32库里大量使用volatile,这个是嵌入式编程的基础。
比如你要读取UART1的DR寄存器,如果没加volatile那么mcu很可能会直接从cpu的寄存器里取缓存过的DR数据,加volatile强制cpu每次都去读DR
一周热门 更多>