你用的什么样的板子?是否板上有比较大的滤波电容,导致芯片没有彻底断电?
如果没有接仿真器,怎么知道程序进入到了没有使能的中断?
因为我在中断服务里的程序是发送USART->DR里的数据,不接仿真器如果一上电就看到串口的数据证明进入了中断.断电是完全和彻底的,拔掉USB我在把板上两极短路,总该不会是残留电压的问题了吧.问题照旧.
我做了很多次试验,也把初始化顺序做了很多不同组合,结果都是一样的.我再总结一下:
初试化顺序:GPIO->USART->NVIC
1.当GPIO和USART之间没有延时时,会进入中断,并且进入RXNE服务,其它服务不会进入.但是USART1->SR只有TXE为1.仅在上电时候进入一次.
2.当GPIO和USART之间有延时时,也会进入中断,但是进入TXE服务,其它服务不会进入.USART1->SR只有TXE为1.仅在上电时候进入一次.
3.当GPIO和USART之间没有延时时,且在USART_Init()前加上USART_DeInit(),会进入中断,并且进入TC服务,其它服务不会进入.USART1->SR有TXE和TC为1.这是正常的,因为我设置为TC中断允许,而复位时TC标志位是置位的.
4.当GPIO和USART之间有延时时,且在USART_Init()前加上USART_DeInit(),现象同(3).
有一个问题是,IDE显示的寄存器值和实际通过memory窗口看到的该地址的值并不相同,比如显示USART->SR为0x90,但是看memory该寄存器地址为0x80.不知道以哪个为准.