你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32CubeMX配置STM32F103C8Tx芯片制作串口数据管理器

[复制链接]
STMCU小助手 发布时间:2021-7-26 11:12
因为arduino控制丝杆和控制拨片的板子都只有1个串口,他们彼此之间需要互相通信,而且还需要和树莓派通信,因此串口数目就不够了,于是我就用STM32F103芯片做了一个串口数据管理器,STM32F103芯片有3个串口,分别是USART1~3,因此我就分了UART1串口和树莓派通信,UART2和驱动拨片的板子通信,UART3和驱动丝杆的板子通信。


任务分析
1.png
串口数据流分配大概如上图所示,黑色的箭头即表示了串口数据流,这都还是好理解的,唯一有些难理解的就是蓝色箭头了。


蓝色箭头指的是舵机驱动板和丝杆驱动板借由STM32F103芯片实现间接的互相通信。


STM32F103在其中扮演着相当重要的命令,由其解析树莓派下发的命令,并且将任务准确分配到舵机驱动板和丝杆驱动板,并且其还解析丝杆驱动板和舵机驱动板上发的命令,保证2块驱动板之间也能实现通信。这样才能最终保证整个串口数据流的稳定。




STM32CubeMX配置工程


首先在STM32CubeMX里面选择我们的芯片(STM32F103C8Tx)
2.png
首先我们来配置SYS为Serial Wire,并把基准时钟配置为SysTick
3.png
接下来配置RCC
4.png
完成了芯片基本配置之后就开始配置串口了,因为舵机驱动板和丝杆驱动板的串口波特率都是9600,因此USART2和USART3的波特率都配置成了9600,那么为了保证一致,我也就将STM32F103与树莓派通信的波特率也配置成了9600,具体配置如下。
5.png


6.png


7.png
完成了串口配置之后可以看到芯片的引脚使用图如下所示,


8.png
那么至此我们以及完成了芯片的配置,接下来就要生成工程了,我用的开发环境是Keil5,因此我选择的IDE是MDK-ARM V5
9.png
还有下图2个选项默认是不会勾选的,但是为了减小生成的Keil5工程文件的大小,我建议都勾选上,第一个是只包含必要的库,第二个是将外设文件都按照.c和.h进行分类。
10.png
完成工程配置之后,点下图这个文件就可以生成工程啦。
11.png
然后就可以编译生成的工程文件了,如果出现了下图错误,请参照文章[url=*https://www.guyuehome.com/29307]《CubeMX配置STM32F103C8T6芯片调试光电传感器》[/url]
12.png




逻辑撰写
首先我们将各个串口重命名一下,减少程序的耦合性
  1. <font face="微软雅黑" size="3">#define PI_SERIAL huart1
  2. #define SCREW_SERIAL huart2
  3. #define SERVO_SERIAL huart3</font>
复制代码
接下来就是在程序的主循环里进行的操作了
  1. <font face="微软雅黑" size="3">
  2. char pi_serial[7] = {'\0'};
  3. char servo_serial[4] = {'\0'};
  4. char screw_serial[3] = {'\0'};
  5. while (1)
  6. {
  7.     if(!HAL_UART_Receive(&PI_SERIAL,(uint8_t *)pi_serial,6,0XFFFF)){//接收到树莓派的消息
  8.         //解析树莓派的命令

  9.     }
  10. }</font>
复制代码


收藏 评论0 发布时间:2021-7-26 11:12

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版