IDE软件实现注意事项

一、代码的位置

区域标记 用途
/* USER CODE BEGIN 0 */ 放头文件、宏定义、函数声明、fputc 重定向
/* USER CODE BEGIN PV */ 放全局变量(整个文件可用)
/* USER CODE BEGIN PD */ 放宏定义(#define
/* USER CODE BEGIN PFP */ 放私有函数声明(函数原型) ,如 static void MyFunction(void);
/* USER CODE BEGIN PM */ 放私有宏定义,通常用于复杂宏或调试宏,与 PD 类似但语义更侧重"宏函数"
/* USER CODE BEGIN 2 */ main 函数初始化后、while 循环前执行的代码
/* USER CODE BEGIN 3 */ while 循环内部末尾的代码
/* USER CODE BEGIN 4 */ 放回调函数、自定义函数
/* USER CODE BEGIN WHILE */ while(1) 循环开头的代码
/* USER CODE BEGIN PTD */ 放用户自定义的类型定义,如 typedef structtypedef enum

二、printf的实现

cs 复制代码
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart6, (uint8_t*)&ch, 1, HAL_MAX_DELAY);
    return ch;
}
#endif

三、HAL_UART_Receive 的data类型注意

uint8_t 后面的 8 就是"8位"的意思,所以它只能是 1 字节,而不是 4 字节。

因为 HAL_UART_Receive 要一次性接收 6 个字节uint8_t data 只能存 1 个字节,而 uint8_t data[7] 才能提供连续的 6 个字节存储空间。

相关推荐
周周记笔记7 小时前
GD32F450xx MCU Datasheet 解读:硬件测试工程师的测试方法论
单片机·嵌入式硬件
潘潘的嵌入式日记8 小时前
I²C 从机接收总被覆盖?双缓冲要在 STOP 时交接
c语言·开发语言·单片机
AOI小白新手上路10 小时前
江科协51单片机16-1 AD/DA ADC 三通道综合显示(LCD1602 版)改造说明
单片机·嵌入式硬件·51单片机
HUI-47411 小时前
EG1135|SSOP‑16 同步整流降压控制器,大功率外置 MOS 降压优选
单片机·嵌入式硬件·硬件工程
单片机仿真设计11 小时前
【proteus仿真】基于 STM32 单片机恒温箱控制系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
国科安芯12 小时前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构
新晨单片机设计13 小时前
S003A-基于STM32单片机温度计(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·stm32单片机功能定制
AOI小白新手上路13 小时前
江科协51单片机16-1 DA数模转换实验(PWM 呼吸灯)
单片机·嵌入式硬件·51单片机
hongmai66688814 小时前
告别Wi-Fi,专注Mesh:ESP32-H2-MINI-1U-H2S模组规格与应用
单片机·嵌入式硬件·物联网·5g·h.265
Yiran_G14 小时前
BLE通信距离怎么判断?从发射功率、PHY到天线设计分析
单片机·嵌入式硬件