打印
[应用相关]

cubeMX配置stm32 F103 实现串口IAP

[复制链接]
1565|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
做个记录实现串口IAP 参考官方实例
D:\STM32Cube_FW_F1_V1.7.0\Projects\STM3210C_EVAL\Applications\IAP
首先制作IAP程序,使用到外设一个串口 一个输入按键  楼主使用的MCU型号为stm32F103RCT6
1、配置IAP程序的系统时钟下载口 串口外设 IO口外设
(1)开启SWD接口
(2)开启系统时钟
(3)开启串口外设(我使用的是串口1,可根据自己信息更改)
(4)配置一个IO口输入
(5)完成系统时钟设置为72MHz,然后生成工程代码
通过对比官方的工程发现我们少了四个文件,故此将ymodem.c   common.c   menu.c  flash_if.c 以及对应的头文件分别拷贝到我们的工程里面的 src 和inc中,并添加到我们的工程中

使用特权

评论回复
评论
cooldog123pp 2022-8-11 09:11 回复TA
哦哦哦,多谢楼主原创 
沙发
flycamelaaa|  楼主 | 2022-8-10 09:43 | 只看该作者
(6)编译报错如下 是我们添加的四个文件中包含了四个头文件 但是我们项目中没有使用,定位到源处将其删除

(7)在此编译仍然报错,原因是添加的那四个文件中有使用到串口句柄,但是与目前我们工程中的串口句柄尚未进行相关的匹配

使用特权

评论回复
板凳
flycamelaaa|  楼主 | 2022-8-10 09:45 | 只看该作者
(8)在usart.h中添加如下代码  #define UartHandle huart1
并在新添加的四个文件中包涵usart.h  并在此编译程序发现错误都消除了
(9)在工程的主函数中将新添加的四个头文件都包含到系统工程中
(10)在工程中申明引用如下两个全局变量
(11)在while(1)之前添加如下代码
(12)执行IAP的功能移植完毕编译并下载代码
连接板子的串口至PC机,然后暗转那个程序中设定的按键然后进行系统复位,然后看到串口中打印出如下信息则表明IAP成功


使用特权

评论回复
地板
flycamelaaa|  楼主 | 2022-8-10 09:50 | 只看该作者
2、用户程序编写 配置系统两个LED灯 然后生成代码

(1)在用户程序main函数的while(1)之前更改用户程序的中断向量地址

官方文件采用更改库函数的方法实现,一般不推荐不然下一次重新生成新的初始化代码的时候又的重新更改

至于0x4000的来源是我们在IAP程序中规定IAP的大小为0x4000,这个大小可以更改但是必须是0x200的整数倍
(2)用户程序中添加如下功能代码 反转LED灯

(3)由于IAP烧写的是bin文件故此需要输出bin文件 ,在MDK中做如下更改 然后保存编译代码


应为IAP已经使用了一部分的代码控制,故此我们的应用程序在flash中药做出相应的偏移
(4)然后回到用户程序的工程下可以看到生成了对应的bin文件



使用特权

评论回复
5
flycamelaaa|  楼主 | 2022-8-10 09:51 | 只看该作者
(5)回到之前串口界面可以看到如下信息

可知要想IAP下载程序请按下数字键盘上的1 则进入等待下载文件模式


然后以ymodem协议的方式下载我们生成的bin文件
当出现如下信息则表明下载成功
从中可知按下数组3则执行代码
然后按下数字3则可以看到板载的LED灯按照我们程序的方式运行
至此完成了串口IAP的全部工作

使用特权

评论回复
6
lvyunzeng| | 2022-8-10 14:28 | 只看该作者
这个牛,可以学习学习

使用特权

评论回复
7
xxmmi| | 2022-8-10 22:06 | 只看该作者
那种方式运行?没看出来

使用特权

评论回复
8
yangxiaor520| | 2022-8-11 08:22 | 只看该作者
cubemx确实方便啊!

使用特权

评论回复
9
dwdsp| | 2022-8-11 09:24 | 只看该作者
一开始用到的官方IAP实例在哪里下载?谢谢

使用特权

评论回复
10
liszt99| | 2022-8-16 10:05 | 只看该作者
dwdsp 发表于 2022-8-11 09:24
一开始用到的官方IAP实例在哪里下载?谢谢

你有用STM32CUBEMX吗?有的话,在你自己的电脑里面找STM32CUBE这个文件夹,然后Repository,里面搜索IAP就有了。

使用特权

评论回复
11
dwdsp| | 2022-8-17 08:51 | 只看该作者
liszt99 发表于 2022-8-16 10:05
你有用STM32CUBEMX吗?有的话,在你自己的电脑里面找STM32CUBE这个文件夹,然后Repository,里面搜索IAP ...

谢谢!

使用特权

评论回复
12
houjiakai| | 2022-8-17 16:00 | 只看该作者
直接使用usb虚拟串口的单片机可以吗

使用特权

评论回复
13
qiufengsd| | 2022-8-18 18:18 | 只看该作者
串口IAP速度怎么样   

使用特权

评论回复
14
jkl21| | 2022-8-18 18:52 | 只看该作者
ymodem没有实现了。   

使用特权

评论回复
15
51xlf| | 2022-8-18 20:05 | 只看该作者
通信的效果怎么样   

使用特权

评论回复
16
soodesyt| | 2022-8-19 20:30 | 只看该作者
感觉实现IAP好复杂呢。   

使用特权

评论回复
17
tpgf| | 2022-9-6 13:02 | 只看该作者
所有的串口都可以这么用吗

使用特权

评论回复
18
nawu| | 2022-9-6 13:10 | 只看该作者
Repository命令的作用是什么

使用特权

评论回复
19
aoyi| | 2022-9-6 20:49 | 只看该作者
必须要用swd接口吗

使用特权

评论回复
20
zljiu| | 2022-9-6 20:56 | 只看该作者
这个工具用的我都不会建立工程了

使用特权

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

本版积分规则

648

主题

2686

帖子

0

粉丝