STM32IAP+Ymodem功能实现(参考官⽅代码)
IAP:在线升级代码,通俗的讲就是通过USART,IIC,或者SPI,USB等等,⽅式,在程序中升级程序,⼀般⽤在远程升级,或者是在PCB板⼦都安装到模具之后还需要升级代码,这样我们就需要,通过IAP的⽅式来升级。
软件代码托管码云地址:
开发环境:MDK-V5,stm32cubeMx,SecureCRT8
iapp免费源码分享网站硬件平台:stm32f103系列最⼩系统板,带有swd仿真接⼝和串⼝1
1、从st的官⽅获取到IAP的⼯程,
⼀路拉到最下⾯
下不了怎么办,⾃⼰想办法,需要填姓名邮箱等等,完事,⼈家会给你的邮箱发⼀条邮件,⾥⾯是下载链接。点开后多等⼀会,毕竟是国外的⽹站,别等不及,连着重复的去点那个按钮,没⽤的,如果还是下载不了,那就我吧,我这⼉有下载好的,留⾔或者邮件我都会回你的。
2、下载完了,解压之后点开⾥⾯有三个⼯程分别是l073,l469,f10的,根据需求⾃⼰选合适的,f10X的点开直接编译就可以,但是l073,和l469的点开发现没有库⽂件,我的天啊,这怎么办啊,哈哈,没关系了,接着向下看吧,
3、我们现在打开stm32cubeMx,根据⾃⼰的需求⽣成⼀个带串⼝和CRC的⼯程,没有CRC直接带串⼝就可以了,需要注意的⼏个地⽅,时钟配置,⼀定要根据⾃⼰实际的情况去配置时钟,串⼝的位数,如果使⽤了校验位,⼀定要在数据位多加1,8bit的数据位,1bit的校验位,⼀定要设置9bit的数据位,唉,到处都是坑,好了,可以导出⼯程了,导出来之后,测试⼀下串⼝功能是不是有效的,main函数⾥⾯⾃⼰写吧,实在不会,可以我的。。。嘿嘿,完事之后备份⼀份这个代码,⼀会app代码也在这个⾥⾯写。
4、好了,我们现在有⼀个属于⾃⼰的带有串⼝的⼯程了,接着打开之前从官⽅下载的⼯程,把⾥⾯的Inc和Src⽂件夹拷贝过来,拷贝到我们的⾃⼰⼯程的路径下⾯,本来有的⽂件选择跳过就可以,⼀定不要替换。
5、接下来给⼯程⾥⾯添加⽂件,把该添加的都添加进去,主要有common.c,ymodem.c,menu.c,flash_if.c,应该是就这四个⽂件了,好了编译试试,哇,⼀⼤堆错误,别着急咱们⼀点⼀点的改,⾸先要改的是串⼝的句柄名称,和crc的句柄名称,可以改成统⼀的就可以,随
便,我配合你你配合我的,⽆所谓了,改完之后在common.h⾥⾯添加你的usart.h有⽂件,随便你怎么,看你⾃⼰怎么添加咯,最后⼀点参考官⽅代码修改你的main⽂件,顺便把该有的错误都改了,完事下到MCU⾥⾯
6、现在我们来看看app代码怎么写,打开我们之前备份好的代码,修改的⼏个地⽅,看下⾯的截图
MDK⾥⾯点开魔术棒,修改Start的地址为你在之前的IAP代码⾥⾯写的地址,Size的⼤⼩是,你的全部地址,减去IAP代码占有的⼤⼩。然后在main 函数⾥⾯添加下⾯⼀句代码,设置中断的向量的地址,
1. SCB->VTOR = FLASH_BASE | 0x4000;
0x4000是你的IAP程序的⼤⼩
MDK⾥⾯如下设置,⽣成bin⽂件
7、⽣成之后,⽤超级终端或者SecureCRT8就可以烧录了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论