STM32 编码规范与 SVN 版本控制

STM32 编码规范与 SVN 版本控制
命名规则

1、自定义数据类型名

/* 前缀必须是模块名称的大写,后缀是 TypeDef */
typedef struct 
{
	uint8_t speed;   //结构体内部变量元素名全部小写,尽量使用缩写,不用下划线
	uint8_t status;  
} MOTOR_TypeDef;

2、函数名

/* 前缀必须是模块名称的大写 MODOLENAME_ */
void MOTOR_Init(void);
/* 前缀后面是函数的功能,驼峰规则命名首字母大写 */
void MOTOR_Brack(void);
/* 驼峰规则中不使用下划线 */
void MOTOR_ChangeSpeed(uint8_t MOTOR_Speed);

3、全局变量

/* 前缀必须是模块名称的大写,后面的单词以下划线分割并且只有首字母大写 */
static MOTOR_TypeDef MOTOR_Run_Time_Status = {0};

4、局部变量

/* 全小写,可以用下划线分割 */	
uint16_t iic_ccr;
uint32_t iic_trise;

5、函数参数

/* 前缀必须是模块名称的大写,后面是驼峰规则命名首字母大写 */
uint32_t TIM_GetPWMDuty(TIM_TypeDef *TIM_Cur, uint8_t TIM_Channel);

6、宏定义

/* 前缀必须是模块名称的大写,后面的单词以下划线分割全部大写*/
#define MOTOR_DUTY_SPEED0 	0
#define MOTOR_DUTY_SPEED1 	(TIMER_PWM_DUTY_MAX * 30 / 100)
#define MOTOR_DUTY_SPEED2 	(TIMER_PWM_DUTY_MAX * 50 / 100)
#define MOTOR_DUTY_SPEED3 	(TIMER_PWM_DUTY_MAX * 70 / 100)
#define MOTOR_DUTY_SPEED4 	TIMER_PWM_DUTY_MAX

7、数字

/* 十六进制x小写、数字中的字母大写,二进制 b 小写 */
a = 0xFABC123;
b = 0b101110;
书写规范

1、缩进:

a)使用空格代替缩进符进行对齐

2、空格:

/* if/while/for 后面使用空格,运算符两边用空格,常量的计算不用空格 */
if (a > 1*2+3)
{
	b = ~(0xFF)
}

3、括号:

a)大括号必须另起一行,单独占一行

4、每行最大长度:

/* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
80 个 ASCII 字符,超长了要换行,换行注意内容对齐
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */
健壮性规范

1、使用assert 断言,assert 像是一种"契约式编程",其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个 if 语句,assert处理的是致命错误,如果发生,则需要立刻停止程序运行,以避免连锁反应产生更大的错误,使用 assert_param(),校验函数参数的合法性。

#ifdef  DEBUG
/*******************************************************************************
* Macro Name     : assert_param
* Description    : The assert_param macro is used for function's parameters check.
*                  It is used only if the library is compiled in DEBUG mode. 
* Input          : - expr: If expr is false, it calls assert_failed function
*                    which reports the name of the source file and the source
*                    line number of the call that failed. 
*                    If expr is true, it returns no value.
* Return         : None
*******************************************************************************/ 
  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
  void assert_failed(u8* file, u32 line);
#else
  #define assert_param(expr) ((void)0)
#endif /* DEBUG */

2、死循环超时机制,while(exp) 的使用必须有超时机制,避免 exp 一直成立产生死循环
3、debug 日志打印,可以控制打印的级别
a. 调试级别1,打印函数名,和函数内所有执行路径的变量值
b. 调试级别2,打印函数调用信息和返回值
c. 日志级别,只打印运行状态相关的信息
d. 沉默运行,不打印任何信息

版本控制

桌面版 svn 之 TortoiseSVN 的单机开发快速开始指南:

  1. TortoiseSVN 是对 svn 的桌面版本的封装。为一个项目创建一个版本库(可以是线上的也可以是本地的)之后,把项目文件添加到版本库,然后就可以对项目进行版本控制,再也不用因为手残误修改导致bug而拼命用Ctrl+z回溯原始代码:
    a. 工作空间:从版本库下载(CheckOut)到本地的项目文件,程序员日常开发过程中,操作的都是工作空间内的内容,提交之前对版本库无影响。
    b. 提交:把工作空间中修改的内容上传到版本库
    c. 分支:可以从主干 COPY 出来若干个分支用于测试而不影响主干的代码,测试成功后把测试好的代码合并到主干;协作开发时分支也可以用于不同模块独立开发,最终多个模块的分支合并到一起成为完整的主干。
    d. 合并:把两个分支合并(Merge)到一起,如果两个分支修改了同一个文件则需要处理冲突。
  2. TortoiseSVN 官网下载程序和语言包并安装
  3. 安装后所有操作都在鼠标右键
    a. 找一个妥善的文件夹,创建一个本地版本库,右键->Create repository here
    b. 设计好版本库内的目录结构,右键->repo browser,找到刚创建的版本库,右键-> Create folder
    i. 在这里插入图片描述
    ii. branches 用于存放众多分支
    iii. Tags 用于存放文档
    iv. Trunk 用于存放废弃的历史分支或文档
    v. branches/MAIN 主干分支
    c. 向版本库下的主干分支添加项目的初始文件,右键->Add file/folder
    在这里插入图片描述
    d. CHECKOUT 一个工作空间,找到开发用的工程目录,右键->CheckOut,选择主干分支
    在这里插入图片描述

TortoiseSVN 集成到 Keil5 的 SVCS

  1. 找到配置文件 C:\Keil_v5\UV4\TortoiseSVN.SVCS
  2. Keil5 ->SVCS 指定配置文件为 TortoiseSVN.SVCS
  3. Database 配置为 repo browser 中的版本库对应的分支路径

SVN 常用命令:

  1. checkout 下载指定分支到本地,形成一个工作空间
  2. commit 提交修改到版本库
  3. update 把本地文件更新为版本库的新版本
  4. diff 对比本地文件和版本库中某个版本文件的差异

TortoiseSVN 回溯旧版本

  1. 右键->Repo-brower
    在这里插入图片描述
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值