STMCU小助手
发布时间:2021-7-26 11:12
|
因为arduino控制丝杆和控制拨片的板子都只有1个串口,他们彼此之间需要互相通信,而且还需要和树莓派通信,因此串口数目就不够了,于是我就用STM32F103芯片做了一个串口数据管理器,STM32F103芯片有3个串口,分别是USART1~3,因此我就分了UART1串口和树莓派通信,UART2和驱动拨片的板子通信,UART3和驱动丝杆的板子通信。$ C0 c) k" }3 T ' f2 e% B+ S0 Y R 任务分析
串口数据流分配大概如上图所示,黑色的箭头即表示了串口数据流,这都还是好理解的,唯一有些难理解的就是蓝色箭头了。 蓝色箭头指的是舵机驱动板和丝杆驱动板借由STM32F103芯片实现间接的互相通信。8 e+ {0 P. K6 d! Z- y9 R7 B STM32F103在其中扮演着相当重要的命令,由其解析树莓派下发的命令,并且将任务准确分配到舵机驱动板和丝杆驱动板,并且其还解析丝杆驱动板和舵机驱动板上发的命令,保证2块驱动板之间也能实现通信。这样才能最终保证整个串口数据流的稳定。, ?( j9 p& d! F0 O/ @/ q 5 F) w* l7 M' q3 Z3 A& ^. W 4 r7 O7 q8 h! I7 G. s: z STM32CubeMX配置工程 9 o) |7 `7 _( H" r; S3 |) B * A( T o( c: Z& r) T v& k 首先在STM32CubeMX里面选择我们的芯片(STM32F103C8Tx)
首先我们来配置SYS为Serial Wire,并把基准时钟配置为SysTick
接下来配置RCC
完成了芯片基本配置之后就开始配置串口了,因为舵机驱动板和丝杆驱动板的串口波特率都是9600,因此USART2和USART3的波特率都配置成了9600,那么为了保证一致,我也就将STM32F103与树莓派通信的波特率也配置成了9600,具体配置如下。. p4 u8 F7 U: G; w. B+ n
% a( [* e. [1 W% q ' j4 C9 M8 ^( s4 C0 _, |- m
* [4 h/ h+ L4 K& {+ M2 W/ G/ ^' j
完成了串口配置之后可以看到芯片的引脚使用图如下所示, - V3 i. Y1 p9 Q- s, M% _
那么至此我们以及完成了芯片的配置,接下来就要生成工程了,我用的开发环境是Keil5,因此我选择的IDE是MDK-ARM V5。. L; D) ]# ]0 m; D8 d
还有下图2个选项默认是不会勾选的,但是为了减小生成的Keil5工程文件的大小,我建议都勾选上,第一个是只包含必要的库,第二个是将外设文件都按照.c和.h进行分类。
完成工程配置之后,点下图这个文件就可以生成工程啦。$ I4 A3 z) \3 g: l* H# {" M
然后就可以编译生成的工程文件了,如果出现了下图错误,请参照文章[url=*https://www.guyuehome.com/29307]《CubeMX配置STM32F103C8T6芯片调试光电传感器》[/url]7 W p4 `+ M# U/ R5 r
, P0 E& R: G- C; k# p * U3 B8 G+ U& d 逻辑撰写( N3 ^3 @8 q; k0 p" t# @9 [ 首先我们将各个串口重命名一下,减少程序的耦合性2 H, v) Y% H9 e* o3 U
8 b% t4 N) d% v }& { |
【STM32H5 评测】ADC 电压表
【STM32H5 评测】基础硬件加密与随机数性能 - STM32H5E5实测硬件AES加解密、HASH运算、TRNG真随机数输出速率与稳定性
【STM32H5 评测】NUCLEO-H5E5ZJ 使用 TrustZone 安全分区系统实践测试
【STM32H5 评测】CPU核心性能 - STM32H5E5跑 RTOS,观察任务切换速度、中断响应快慢
【STM32H5 评测】介绍、环境搭建、工程测试
#双节活动 1.在CubeMX中引用touchGFX出现的问题与解决
如何将STM32CubeMX生成的CMake工程导入STM32CubeIDE
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
STM32CubeCLT 1.22.0新版本发布
【下载问题解决】关于ST官网下载软件问题解决
微信公众号
手机版