串口打印
1.用STM32CubeMx配置串口
串口1模式选择异步,不开启硬件控制流
波特率:115200
数据长度:8位
校验位:无
停止位:1位
使能接收和发送
重复采样(Over Sampling):对电平状态重复采样,提高准确性,默认16 Samples,无法修改
2.生成keil工程,编写程序
public.h
串口宏定义,宏名 huart_debug 后续用于串口发送函数中
#define SoftWare_Version (float)1.0
#define huart_debug huart1
public.c
在程序框架的public.c文件中,对 printf 函数进行重映射操作,重写 fputc函数
HAL_UART_Transmit函数的第一个参数是要发送接收的串口号,第二个参数是要发送字符的指针,第三个参数是发送的字符个数,第四个参数是发送的超时时间,单位为毫秒
int fputc(int ch,FILE* f)
{
HAL_UART_Transmit(&huart_debug,(uint8_t*)&ch,1,0x000A);
return ch;
}
3.发送字符串
MyInit.c
在自己的初始化函数中,用 printf 函数往串口1打印初始化信息
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
系统运行函数中,串口输出状态机运行次数,输出每次运行的状态
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.串口打印结果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)