STM32
登录
直播中
唯爱萌meng
9年用户
1017经验值
擅长:可编程逻辑
私信
关注
[问答]
分享一个不错的STM32F103C8T6-CubeMx串口收发程序详细设计与测试
开启该帖子的消息推送
STM32F103C8T6
分享一个不错的
STM32
F103C8T6-CubeMx串口收发程序详细设计与测试
回帖
(1)
h1654155275.6260
2021-12-13 10:32:52
STM32F103C8T6-CubeMx串口收发程序详细设计与测试(1)——CubeMx生成初始代码
关键词:STM32F103C8T6 CubeMX UART 详细程序设计
1.开发环境
(1)STM32CubeMX,版本:4.27.0,截止写稿时,最新版本已到6.0.1,但孔丙火(微信公众号:孔丙火)实在是用不习惯版本5以后的界面,所以还继续用4版本的。
图1-1 (2)MDK(Keil),版本:5.17,有部分朋友用的还是4版本的,建议升级到5,在5下装一个兼容包,就可以用5打开4版本的程序。
2.CubeMx配置及代码生成
(1)新建CubeMX工程
孔丙火(微信公众号:孔丙火)认为,这一步比较简单,点击初始界面中的New Project,在后面出现的配置窗口中,搜索STM32F103C8,选择这个器件,然后点击Start Project就可以了。
(2)按照图1-2和1-3设置外设和端口。
图1-2
我用的是12M的外部晶振,图中两个红框处配置一下,其他按照默认即可。注意一下APB1 Timer clocks的值是多少,这个在后面配置定时器时需要用到,原因见图1-5,TIM2使用的是APB1的时钟。
图1-4
图1-5 (4)USART1和TIM2的参数配置,见图1-6。
UART的参数配置见图1-7,需要注意word length这一选项,括号里有个including parity,意思是说包含奇偶校验位,孔丙火(微信公众号:孔丙火)要着重强调一下,如果是无校验,那这个参数就是数据长度,如果是奇校验或偶校验,那个这个参数就是实际的数据长度+1,这个不要弄错了,否则通信会出问题。图1-8中的那个USART的中断要打勾,已启用中断。
图1-6
图1-7
图1-8
图1-9 图1-9是TIM2的参数设置,设置每个计时周期为50us,TIM2采用的是APB1的时钟,即12MHz,则计算公式为:
,x为Prescaler的数值+1,可以计算得到:x = 600,Counter Period设为35-1,则TIM2每进一次中断的周期为:1750us,之所以这样设置,孔丙火(微信公众号:孔丙火)主要是为以后的Modbus设计做准备。图1-10中的TIM2的红框需要打勾,以启用TIM2的中断。
图1-10
图1-11 完成以上设置后,点开STM32CubeMx的project settings选项,按照图1-11和图1-12的提示设置。然后按照图1-13的提示生产即可生产工程代码,孔丙火(微信公众号:孔丙火)使用的是MDK V5。使用V4版本的朋友建议升级到V5,看到有的朋友使用V5时带不开V4的工程,只要装一个兼容包,就可以了,不会弄的朋友可以在公众号留言。
图1-12
STM32F103C8T6-CubeMx串口收发程序详细设计与测试(1)——CubeMx生成初始代码
关键词:STM32F103C8T6 CubeMX UART 详细程序设计
1.开发环境
(1)STM32CubeMX,版本:4.27.0,截止写稿时,最新版本已到6.0.1,但孔丙火(微信公众号:孔丙火)实在是用不习惯版本5以后的界面,所以还继续用4版本的。
图1-1 (2)MDK(Keil),版本:5.17,有部分朋友用的还是4版本的,建议升级到5,在5下装一个兼容包,就可以用5打开4版本的程序。
2.CubeMx配置及代码生成
(1)新建CubeMX工程
孔丙火(微信公众号:孔丙火)认为,这一步比较简单,点击初始界面中的New Project,在后面出现的配置窗口中,搜索STM32F103C8,选择这个器件,然后点击Start Project就可以了。
(2)按照图1-2和1-3设置外设和端口。
图1-2
我用的是12M的外部晶振,图中两个红框处配置一下,其他按照默认即可。注意一下APB1 Timer clocks的值是多少,这个在后面配置定时器时需要用到,原因见图1-5,TIM2使用的是APB1的时钟。
图1-4
图1-5 (4)USART1和TIM2的参数配置,见图1-6。
UART的参数配置见图1-7,需要注意word length这一选项,括号里有个including parity,意思是说包含奇偶校验位,孔丙火(微信公众号:孔丙火)要着重强调一下,如果是无校验,那这个参数就是数据长度,如果是奇校验或偶校验,那个这个参数就是实际的数据长度+1,这个不要弄错了,否则通信会出问题。图1-8中的那个USART的中断要打勾,已启用中断。
图1-6
图1-7
图1-8
图1-9 图1-9是TIM2的参数设置,设置每个计时周期为50us,TIM2采用的是APB1的时钟,即12MHz,则计算公式为:
,x为Prescaler的数值+1,可以计算得到:x = 600,Counter Period设为35-1,则TIM2每进一次中断的周期为:1750us,之所以这样设置,孔丙火(微信公众号:孔丙火)主要是为以后的Modbus设计做准备。图1-10中的TIM2的红框需要打勾,以启用TIM2的中断。
图1-10
图1-11 完成以上设置后,点开STM32CubeMx的project settings选项,按照图1-11和图1-12的提示设置。然后按照图1-13的提示生产即可生产工程代码,孔丙火(微信公众号:孔丙火)使用的是MDK V5。使用V4版本的朋友建议升级到V5,看到有的朋友使用V5时带不开V4的工程,只要装一个兼容包,就可以了,不会弄的朋友可以在公众号留言。
图1-12
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32F103C8T6
stm32F103C8T6
的printf
串口
输出
程序
该如何去配置呢
2021-12-02
1160
怎样用
stm32F103C8T6
的
串口
下载
程序
?
2016-11-20
16404
如何利用
stm32cubemx
去完成基于
stm32f103c8t6
流水灯的配置呢
2021-11-25
926
使用
STM32F103C8T6
+
STM32CubeMX
做项目时常见的四种问题应该如何解决?
2021-10-22
2383
CubeMX
配置
STM32F103C8T6
芯片调试光电传感器的步骤
2021-12-07
1752
如何对基于
STM32F103C8T6
的Gokit V2.1板卡进行
测试
呢
2021-11-04
1283
如何利用
STM32F103C8T6
实现
串口
IAP方式升级固件?
2021-12-14
1201
STM32F103C8T6
标准库的USART2是怎样发送
程序
的
2021-12-13
1032
STM32F103C8T6
串口
IAP为什么会不成功呢
2021-12-06
1391
STM32F103C8T6
串口
1
程序
编写过程中出现哪些问题
2021-12-14
1267
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分