打印
[应用相关]

关于STM32 IAP

[复制链接]
楼主: sensitivity
手机看帖
扫描二维码
随时随地手机跟帖
61
毕竟是用户程序,串口1可能要参与别的通信,,,所以自己加了一个判断是否是要更新程序的数据,,,是的话才往Flash里面写

使用特权

评论回复
62
susceptibility| | 2020-7-24 21:00 | 只看该作者
自己的源码

链接:http://pan.baidu.com/s/1bJtc78密码:nobu

使用特权

评论回复
63
susceptibility| | 2020-7-24 21:01 | 只看该作者
这两天发现了自己程序的Bug

1,如果用户程序主函数加入延时,那么程序就来不及读出然后写到Flash里面,串口却不停的往环形队列里面写,从而造成环形队列溢出....

使用特权

评论回复
64
susceptibility| | 2020-7-24 21:02 | 只看该作者
再者如果写入的时候,设置的串口助手的波特率太快,,,,同样也会造成环形队列溢出(就是往环形队列写的太快了)....

自己把写Flash的程序放在了定时器里面,50Us进入一次的定时器,看着网上说往Flash写一个字节大约16Us,,,,加上其余的程序整体应该不会超过50Us

如果有溢出程序不在往环形队列里面写了

使用特权

评论回复
65
susceptibility| | 2020-7-24 21:03 | 只看该作者
voidUSART1_IRQHandler(void)//串口1中断服务程序{

u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//接收中断(接收到的数据必须是0x0d 0x0a结尾){

Res=USART_ReceiveData(USART1);//读取接收到的数据if(Overflow==0)

{if(PutData(&Res,1) == -1)

{

Overflow=1;

}

}

Usart1RecCnt++;

}

}

使用特权

评论回复
66
susceptibility| | 2020-7-24 21:03 | 只看该作者
最后接收完如果判断溢出过,直接复位重启,复位重启更方便直接...

if(Usart1Flage ==1)//串口1接收完成{

addr2=FLASH_APP2_ADDR;

Usart1Flage=0;if(Overflow==1)//如果中途溢出了{

printf("程序中途溢出,准备复位重启!!\r\n");

Reset_MCU();//复位重启CPU}

使用特权

评论回复
67
susceptibility| | 2020-7-24 21:04 | 只看该作者
2,如果写了一些后,突然因为某些原因停止了写入,,,,,本想在程序中观察末尾有什么固定的数据没有,,,,或者自己最后加一些标志位

但是这个现在程序好像能判断出来....但是自己一直没有明白程序为什么可以判断出来............应该判断不出来的......

后来一想现在反正是自己去更新程序,真不行可以直接烧,,,,就先放一放,,,,

使用特权

评论回复
68
susceptibility| | 2020-7-24 21:05 | 只看该作者
更改后的

链接:http://pan.baidu.com/s/1slnWFVJ密码:mts7

使用特权

评论回复
69
susceptibility| | 2020-7-24 21:06 | 只看该作者

作者:杨奉武
链接:https://www.jianshu.com/p/8eb8465d5dee
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则