最近在调试stm32 的IAP 通过CAN来更新程序,发现一个很怪的现象,设置复位深度的不同影响CAN接收数据,但我不知道为什么,找不到具体的原因。第一种方法,是通过置位 NVIC中应用程序中断与复位控制寄存器(AIRCR)的VECTRESET 位(位偏移:0),程序在复位后重新接收数据时有时接收数据时丢掉了一帧数据,比如一行HEX数据分三帧,只接收到了后俩帧,第一帧没收到,不知道为什么;后来把复位设置为另一种模式复位的第二种方法,是置位同一个寄存器中的 SYSRESETREQ位,居然没有出现上面提到的现象,试了很多次,都没有问题,虽然更新程序的问题得到解决,但是不明白所以然,我到底是否接到了数据,还是在接收的过程中第一帧数据被挤掉了还是根本没接到等,先把这些疑问忽略,对于复位深度的设置,为什么截然不同呢?希望知道的大侠给解答一下,不然虽然问题得到解决,感觉不踏实。 |