TuringUi系列(六)
TuringUi系列(六)
**CzrTuringB:**记录一下TuringUi框架搭建过程中的学习心得和体会。
第一部分 C语言理解
第一章 代码规范
-
变量、结构体属性、函数形参采用首字母小写的驼峰命名;
-
函数、常量、枚举、结构体名称、文件名称、采用首字母大写的驼峰命名;
-
C文件模板:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17/**
*@ FileName:
*@ Author: CzrTuringB
*@ Brief:
*@ Time: ${date}
*@ Requirement:
*@ Notes:
*/
/* Includes" "------------------------------------------------------------------*/
/* Includes< >------------------------------------------------------------------*/
/* Data(作用域为当前C文件)-----------------------------------------------------*/
//-define
//-enum
//-struct
//-variable
/* Functions Declare------------------------------------------------------------------*/
/* Functions Define------------------------------------------------------------------*/ -
H文件模板:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20/**
*@ FileName:
*@ Author: CzrTuringB
*@ Brief:
*@ Time: ${Date}
*@ Requirement:
*@ Notes:
*/
/* Includes" "------------------------------------------------------------------*/
/* Includes< >------------------------------------------------------------------*/
/* Data(对外接口)-----------------------------------------------------*/
//-define
//-enum
//-typedef(类型重命名)
//-struct
//-variable
/* Functions Declare(对外接口函数)------------------------------------------------------------------*/ -
函数注释模板:
1
2
3
4
5
6
7
8/**
*@ FunctionName:
*@ Author: CzrTuringB
*@ Brief:
*@ Time: Jan 13, 2025
*@ Requirement:
*@ Notes:
*/
第二章 C文件设计理解
**CzrTuringB:**对于单片机编程而言,通常一个外设或一个功能对应一个C文件和配套的头文件,C文件中应包含功能的实现,头文件中则应包含对外的接口,供给其他文件使用。
-
应包含自身对应的头文件和C文件实现功能所需的其他头文件。
-
编码过程中尽量将不必要的参数定义限制在C文件内部,对外提供必须的接口以减小命名污染。
第三章 H文件设计理解
-
头文件中存放的是功能实现对于项目工程文件的对外接口,非必要定义不要存放在头文件中。
-
非必要情况下不要在头文件中包含其他的头文件,以避免头文件循环包含。
第二部分 FreeRTOS理解
第一章 STM32中断和FreeRTOS中断
第一章 资源管理
**CzrTuringB:**对于某一个外设或内存空间,若A任务操作外设或更改内存数据中途发生任务的切换,而切换的任务恰好也想操作或更改同一个外设或内存空间,那么代码的执行结果是不可预测的,因此在编程过程中应采取某些手段来避免此类现象的发生。
-
常见的资源管理方法:
- 临界段
第一节 临界段
-
临界段:指被被taskENTER_CRITICAL()宏定义和taskEXIT_CRITICAL()宏定义包围的代码。任何中断或任务在执行这段代码时都不能打断,否则可能导致数据竞争、资源冲突或系统异常。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 CzrTuringB的博客!