STM32编程前注意事项和一些常识

段(section):描述映像文件的代码和数据块。
RO : Read-Only的缩写,包括RO-data(只读数据)和RO-code(代码)。
RW : Read-Write的缩写,主要是RW-data,RW-data由程序初始化初始值。
ZI: Zero-initialized的缩写,主要是ZI-data,由编译器初始化为0。
.text : 与RO-code同义。
.constdata : 与RO-data同义。
.bss :与ZI-data同义。
.data:与RW-data同义

bsp_Init(); 硬件初始化
PrintfLogo()打印例程名称和版本信息
PrintfHelp()打印操作提示

注释格式尽量统一,建议使用“/* …… */”,因为 C++注释“//”并不被所有 C 编译器支持。

变量作用域的前缀
为了清晰的标识变量的作用域,减少发生命名冲突,应该在变量类型前缀之前再加上表示变量作用域的前缀,并在变量类型前缀和变量作用域前缀之间用下划线‘-’隔开。
具体的规则如下:
(1)对于全局变量(global variable),在其名称前加“g”和变量类型符号前缀。
uint32_t g_ulParaWord;
uint8_t g_ucByte;
(2)对于静态变量(static variable),在其名称前加“s”和变量类型符号前缀。
static uint32_t s_ulParaWord;
static uint8_t s_ucByte;

如果项目内有使用printf打印中文字符串,则AC6编译过程会弹出警告信息,虽然不影响使用,但是十分烦人。可以填入 -Wno-invalid-source-encoding 将该警告信息屏蔽。
在这里插入图片描述

TAB缩进设置为4字节 在Edit-configuration选项下设置
在这里插入图片描述
鼠标双击再CTRL+R整个工程查找
CTRL+E 跳转到另一个括号
CTRL+H替换
CTRL+l 剪切数据
CTRL+F2 添加标签,当编辑很多文件时,方便查找位置,按F2查找
ALT+鼠标左键 选择列的数据 可以多个列同时加数据
SHIFT+ALT批量编辑

Configuration -User Keywords-C/C++ Editor files-User Keywords 编辑关键字颜色
对于一些常见类型的变量,应在起名字前标注表示其类型的前缀。
在这里插入图片描述

### STM32CubeMX中的命名规则约定 #### 项目文件夹结构与文件名称 在创建新工程时,建议遵循一定的目录结构来保持项目的整洁有序。通常情况下,源代码会被放置于`Src`文件夹下,头文件位于`Inc`文件夹内。对于库函数或者其他外部依赖,则可以放在专门的子目录里以便管理维护[^1]。 #### 变量及宏定义的名字 为了提高可读性便于理解,在写C/C++程序时应该采用有意义且描述性的变量名。例如,当涉及到定时器配置时,可以用`TimerHandle`表示定时器句柄;如果是用于存储传感器数据,则命名为`sSensorDataBuffer`会更加直观易懂。另外,所有的宏定义都应大写并用下划线分隔单词,像这样:`#define LED_PIN GPIO_PIN_5`[^2]。 #### 函数签名的设计原则 函数应当具有清晰的功能说明,并通过参数列表传递必要的输入输出信息。一般而言,返回值用来指示操作成功与否或者是特定的结果状态码。比如下面这个简单的IIC通信接口实现: ```c HAL_StatusTypeDef I2C_ReadRegister(I2Cx_HandleTypeDef* hi2cx, uint8_t DevAddress, uint8_t Reg, uint8_t *pData); ``` 这里采用了匈牙利命名法(Hungarian notation),即前缀表明了类型或用途,这有助于快速识别各个实体的作用范围以及它们之间的关系[^3]。 #### 外设对象实例化方式 在外设驱动初始化过程中,经常会遇到诸如UART、SPI之类的硬件资源管理问题。此时可以通过如下所示的方式声明外设句柄: ```c static UART_HandleTypeDef huart1; ``` 这种静态局部变量的形式不仅能够减少全局作用域污染的风险,而且有利于模块间的解耦合设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值