一次STM32下的bootloader调试过程记录

单片机:STM32F103VCT6

bootlodaer是用keil写,串口1和串口5作为下载app串口

app程序是用rt-thead studio写的,串口4作为控制台串口

程序逻辑:booloader启动程序初始化硬件,等待串口命令5s,超时检查app正确否,正确跳转到app执行,错误复位,继续等待.如果在等待的时候收到串口命令执行串口命令,可以读取参数,修改参数,下载app程序等,下载app程序放到W25Q64里面,下载完成通过校验后搬运到app分区.当跳转到app程序正常运行,收到升级命令后跳转到bootloader程序运行.

调试过程出现的问题:

app程序单独运行可以,加上bootloader后串口串口中断接收卡死

参考一下

RT-Thread-控制台用UART4,不带boot没问题,带boot就有不工作RT-Thread问答社区 - RT-Thread

app程序中串口使用DMA方式的没有问题,串口中断方式的都卡死,UART1-UART4是用DMA可以,但是UART5没有DMA,只能用串口中断接收,

注意一下几点

1.bootloader程序跳转到app前要对串口进行恢复初始化,不然在bootloader程序中使用DMA方式,到app中串口中断打开的时候DMAR寄存器清不掉,会影响串口的接收

2.在带bootloader的App程序中,串口中断接收会卡死在接收中断里面,查了很长时间才发现是IDLE中断清不掉,这个一直没搞明白为什么清不掉,看手册说是只要读取SR,再读DR就能清掉,但是始终清不掉,不知道为什么,没办法只能把IDLEIE关掉,不让他产生中断

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值