Image
Image

sensitivity

+ 关注

粉丝 0     |     主题 9     |     回帖 216

关于STM32 IAP
2020-7-24 21:06
  • ST MCU
  • 68
  • 1561
  所以说上面的数据取出来就是08 00 20 E9然后&0xFF000000 肯定就等于 0x08000000啦 其实这样还有一个原因 ...  
  一个浮点型的数据转换成16进制存到数组里面--其实也是按照IEEE754规约来计算的 Resolver_Usart.Data = 220 ...  
  一个整形数据快速的转换成16进制存到数组里面 Resolver_7758.Data = 60000; 那么Resolver_7758.Data_Tabl ...  
  说到这里就要说一下共用体 typedef union Resolver_I{longData;charData_Table[4]; }Resolver_iData; ty ...  
  还有一件事就是STM32是小端模式,,,,所谓小端模式就是低位在低地址,高位在高地址 举个例子 把60000存到STM ...  
  FLASH_APP2_ADDR+4指针就移动到了IAP升级程序的E9或者说电压电流采集程序的D5上 (*(vu32*)(FLASH_APP2_ADD ...  
  然后呢,我是看别人的程序说,数据的第一个4个字节为栈顶地址,数据的第二个4字节为复位中断向量的入口地址 ...  
  先问一个问题,怎么知道接收过来的是用户程序呢????要是别的数据怎么办???,,必须有一个判断依据才行对吧!! ...  
  后边屏蔽的是测试的时候,看一下写入的数据,然后和源数据对比一下,看一下写入的对不对 if(((*(vu32*)(FLASH ...  
  好,那就看一下判断接收完程序 if(Usart1Flage ==1)//数据接收完成{ addr2= FLASH_APP2_ADDR;//存储数据的 ...  
  if(rbCanRead(&pRb)>1) 因为一次性要往Flash里面写16位数据,所以才会判断数据个数大于一个的时候再往里面 ...  
  先看我的IAP的  
  我的IAP的接收的数据往Flash里面写和用户程序的往Flash里面写有一点不同,其实用户程序的往Flash里面写的程 ...  
  /*系统定时器中断*/voidSysTick_Handler(void) { SysTickCnt++; SysTickCnt1++; SysTickCnt2++;if(SysT ...  
  关于单片机空闲中断可以看一下自己以前的 http://www.cnblogs.com/yangfengwu/p/6746403.html ...  
  用的系统定时器中断来检测的串口空闲,判断接没接收到一条完整的数据--方法呢是看到人家的一种方法,感觉比自 ...  
  就再说一下自己的程序的一些地方 串口接收的  
  自己呢就是用的环形队列一边接收,一边写入,,,关于环形队列可以看我的环形队列的**,,, http://www.c ...  
  列如很多都是: u8 USART_RX_BUF  __attribute__ ((at(0X20001000)));//接收缓冲,最大USART_REC_LEN个字 ...  
  但是自己的程序已经超过了这个字节数 所以自己就不能先定义一个很大的数组然后然后把程序先存在里面了, ...  
2
3
近期访客