1、if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)

很多人会疑惑这个判断是什么意思,尤其是0x20001000这个地址怎么来?

原子例程中有提到:“串口接收过来的数据,是从:0X20001000开始存储的。”

即:0x20001000是串口数据缓存数组的起始地址,也就是USART_RX_BUF的起始地址。但实际情况下,USART_RX_BUF的起始地址不一定是0x20001000。所以书写的时候,需注意。

(*(vu32*)(0X20001000+4),这个就是取中断向量的入口地址。如下图,bin文件中,0~3是MSP地址,4~7是中断向量入口地址。

(*(vu32*)(0X20001000+4) = [01 01 00 08] = 0x08000101

if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000) = if((0x08000101&0xFF000000)==0x08000000)

STM32 IAP升级 知识点记录

相关文章:

  • 2021-04-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-29
  • 2022-12-23
  • 2021-09-27
  • 2021-11-15
猜你喜欢
  • 2022-12-23
  • 2021-04-06
  • 2021-10-09
  • 2021-08-16
  • 2022-12-23
  • 2021-12-03
  • 2021-12-15
相关资源
相似解决方案