使用cubemx快速建立一个串口通信程序

序言

st官方已经停止更新标准库了,而且新出的一些芯片用到的基本也都是HAL库,因为原来在学校接触的都是标准库,直到工作以后才接触的HAL库,才知道有cubemx这个神器存在。用它建立工程简直不要太爽。接下来给大家分享一个串口通信的工程。
不解的是,我见过很多的工程师都不用cubemx的,(理由是cubemx建立的工程代码太臃肿)。也许是原来的项目用的是标准库新项目对接用标准库方便,也许是不愿意做出改变,又或许是不了解。不过,既然存在就有它的道理。实际项目中该用什么库听大佬安排。不过身为打工人的自己还是得多一份技能。。。

建立工程

使用的cubemx版本为6.1.2,mdk版本为5.33。使用得测试芯片为stm32f030,当然用其他型号也是一样的。

配置cubemx

首先配置DEBUG,防止下次下载程序的时候得按复位键,省的麻烦。。
ykun1
然后就是配置外部时钟,配置最高时钟下运行
ykun2
ykun3
接下来配置串口(记得使能中断)以及led引脚(PC13)
ykun4
然后,再次配置一个1mm的时钟(记得使能中断),用于配合串口接收用。(写过经过众多的串口接收,最后还是觉得配合一个定时器使用最为稳妥)
ykun5
生成代码以后先亮个LED灯压压惊。直接加在main函数中的while循环里即可。

  while (1)
  {
   
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
	  HAL_Delay(200);
  }
  /* USER CODE END 3 */

ykun5

添加串口部分代码

串口部分包括发送和接收两个部分

添加printf打印代码

在usart.c文件里面添加如下代码后即可在main函数中调用printf函数

/* USER CODE BEGIN 0 */
#include "stdio.h"

struct __FILE 
{
    
	int handle; 

};

FILE __stdout;    

int fputc(int ch, FILE *f)
{
   
    //具体哪个串口可以更改huart1为其它串口
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1 , 0xffff);
    return ch;
}
/* USER CODE END 0 */

啥也不说,直接上图即可
ykun6

添加接收代码

这里要特别说明一下,由于用的是cubemx提供的库,我把串口接收弄成了一个c文件跟一个h文件了,相当于一个APP,必要时直接移植即可。
首先是C文件

//象征性的添加头文件
#include "app_usart.h"
#include "stdint.h"
#include "usart.h"

#if USER_EXTENR_DATA
	uint8_t User_Re[Set_Re];
#else
	uint8_t *User_Re;//用户使用的指针,用户需要使用到串口接收的值的时候拷贝即可
#endif

struct
{
   
	uint16_t Re_Compl      :
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

you~link

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值