STM32物联网项目-串口打印

串口打印

1.用STM32CubeMx配置串口

串口1模式选择异步,不开启硬件控制流

在这里插入图片描述

波特率:115200

数据长度:8位

校验位:无

停止位:1位

使能接收和发送

重复采样(Over Sampling):对电平状态重复采样,提高准确性,默认16 Samples,无法修改

在这里插入图片描述

2.生成keil工程,编写程序

public.h

串口宏定义,宏名 huart_debug 后续用于串口发送函数中

/* Public define-------------------------------------------------------------*/
#define SoftWare_Version (float)1.0
#define huart_debug huart1

public.c

在程序框架的public.c文件中,对 printf 函数进行重映射操作,重写 fputc函数

HAL_UART_Transmit函数的第一个参数是要发送接收的串口号,第二个参数是要发送字符的指针,第三个参数是发送的字符个数,第四个参数是发送的超时时间,单位为毫秒

/*
* @name   fputc
* @brief  fput映射到物理串口
* @param  ch:待发送的字符
* @retval ch:已发送的字符   
*/
int fputc(int ch,FILE* f)
{
  //往串口1发送ch字符,每次发送1个字符,超时时间为10ms
  HAL_UART_Transmit(&huart_debug,(uint8_t*)&ch,1,0x000A);
  return ch;
}

3.发送字符串

MyInit.c

在自己的初始化函数中,用 printf 函数往串口1打印初始化信息

/*
* @name   Peripheral_Set
* @brief  外设设置
* @param  None
* @retval None   
*/
static void Peripheral_Set()
{
  printf("---此程序实现串口打印功能---\r\n");
  printf("Initialization completed,system startup!\r\n");
  printf("Software version is V%.1f\r\n\r\n",SoftWare_Version);

  printf("开始运行有限状态机:\r\n\r\n");
}

System.c

系统运行函数中,串口输出状态机运行次数,输出每次运行的状态

/*
* @name   Run
* @brief  系统运行
* @param  None
* @retval None   
*/
static void Run()
{
  static uint8_t STA_Cnt = 1;

  if(STA_Machine.ucSTA_Machine_Status == STA1)
  {
    printf("状态机第%d次运行!\r\n",STA_Cnt++);
  }

	switch (STA_Machine.ucSTA_Machine_Status)
  {
    case STA1:STA_Machine.Fun_STA1();printf("状态机状态为STA1\r\n");break;
    case STA2:STA_Machine.Fun_STA2();printf("状态机状态为STA2\r\n");break;
    case STA3:STA_Machine.Fun_STA3();printf("状态机状态为STA3\r\n");break;
    case STA4:STA_Machine.Fun_STA4();printf("状态机状态为STA4\r\n");break;
    case STA5:STA_Machine.Fun_STA5();printf("状态机状态为STA5\r\n\r\n");break;
    default:STA_Machine.ucSTA_Machine_Status = STA1;break;
  }
}

4.串口打印结果

在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值