两种编写代码风格方式对比
一、简洁版本,便于阅读,不方便移植
//led.h
#define LED1 PBout(0)
#define LED2 PBout(1)
#define LED3 PBout(5)
void LED_Init(void);//初始化//led.c
void LED_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_5; //PB.0.1.5 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5GPIO_SetBits(GPIOB,GPIO_Pin_0); //GPIOB.0输出高电平 GPIO_SetBits(GPIOB,GPIO_Pin_1); //GPIOB.1输出高电平 GPIO_SetBits(GPIOB,GPIO_Pin_5); //GPIOB.5输出高电平
}//main.cint main(void){ HSE_SetSysClock(RCC_PLLMul_9);//SYSCLKΪ8*9=72MLED_Init();while(1){ LED1=0;LED2=1;LED3=1;}
}
如果想要修改三个LED为PA6,PA7,PA8,修改的地方如下:
二、编写更复杂,便于移植
//led.h
#define LED1_GPIO_PORT GPIOB /* GPIO端口组 */
#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB /* GPIO端口时钟 */
#define LED1_GPIO_PIN GPIO_Pin_0 /* GPIO端口号 */#define LED2_GPIO_PORT GPIOB /* GPIO端口组 */
#define LED2_GPIO_CLK RCC_APB2Periph_GPIOB /* GPIO端口时钟 */
#define LED2_GPIO_PIN GPIO_Pin_1 /* GPIO端口号 */#define LED3_GPIO_PORT GPIOB /* GPIO端口组 */
#define LED3_GPIO_CLK RCC_APB2Periph_GPIOB /* GPIO端口时钟 */
#define LED3_GPIO_PIN GPIO_Pin_5 /* GPIO端口号 */#define LED1_OFF GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);//LED1对应GPIO输出高电平
#define LED1_ON GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);//LED1对应GPIO输出低电平#define LED2_OFF GPIO_SetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);//LED2对应GPIO输出高电平
#define LED2_ON GPIO_ResetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);//LED2对应GPIO输出低电平#define LED3_OFF GPIO_SetBits(LED3_GPIO_PORT,LED3_GPIO_PIN);//LED3对应GPIO输出高电平
#define LED3_ON GPIO_ResetBits(LED3_GPIO_PORT,LED3_GPIO_PIN);//LED3对应GPIO输出低电平void LED_Init(void);//初始化//led.c
void LED_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;//定义一个GPIO_InitTypeDef类型的结构体RCC_APB2PeriphClockCmd(LED1_GPIO_CLK|LED2_GPIO_CLK|LED3_GPIO_CLK,ENABLE);//使能LED1.2.3端口对应时钟GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;//选择LED1.2.3端口号GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure); //初始化GPIOBGPIO_InitStructure.GPIO_Pin = LED2_GPIO_PIN;//选择LED1.2.3端口号GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure); //初始化GPIOBGPIO_InitStructure.GPIO_Pin = LED3_GPIO_PIN;//选择LED1.2.3端口号GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure); //初始化GPIOB GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN); //LED1输出高电平 GPIO_SetBits(LED2_GPIO_PORT,LED2_GPIO_PIN); //LED2输出高电平 GPIO_SetBits(LED3_GPIO_PORT,LED3_GPIO_PIN); //LED3输出高电平
}//main.cint main(void){ HSE_SetSysClock(RCC_PLLMul_9);//SYSCLKΪ8*9=72MLED_Init();while(1){ LED1_ON;LED2_ON;LED3_ON;}
}
如果想要修改三个LED为PA6,PA7,PA8,修改的地方如下:
可以看出来第二种方式只需要修改.h
文件即可,移植起来更加方便。
两种编写代码风格方式对比相关推荐
- C++两种编写单件模式方法对比
1.第一种: 1 template <typename T> 2 class CSingletonT 3 { 4 public: 5 6 virtual ~CSing ...
- 基于ArcGIS JS API实现的两种距离和面积测量方式
文章目录 前言 开发思路 主要代码 效果测试 效果图 测试页面 开发总结 参考链接 前言 在一些地图地图应用中,距离.面积测量属于基础功能.ArcGIS API for JavaScript有单独提供 ...
- 两种内存池管理方法对比
一.问题背景 最近在调试ambiq apollo3的蓝牙时,其使用了ARM Cordio WSF的蓝牙协议栈.通过学习wsf_buf.c的实现,看到了一种不同于固定大小内存块的内存池管理方式.它使用了 ...
- 两种获取connectionString的方式
两种获取connectionString的方式 1. public static string connectionString = ConfigurationManager.ConnectionSt ...
- Hibernate中两种获取Session的方式
转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...
- 在计算机系统中有两种不同的图像编码方式,第二章计算机系统与计算原理.ppt...
第二章计算机系统与计算原理 大学计算机基础 * 信息表示与处理 ----西文字符 ASCII 码是美国信息交换标准代码(American Standard Code for Information I ...
- TF之RNN:TF的RNN中的常用的两种定义scope的方式get_variable和Variable
TF之RNN:TF的RNN中的常用的两种定义scope的方式get_variable和Variable 目录 输出结果 代码设计 输出结果 代码设计 # tensorflow中的两种定义scope(命 ...
- mui几种页面跳转方式对比
mui几种页面跳转方式对比 http://blog.csdn.net/uikoo9/article/details/44676963 [几种打开页面的方式] 1.初始化时创建子页面 2.直接打开新页面 ...
- python代码编辑教程_python教程:pycharm编写代码的方式教学
python可以说是新的编程语言,虽说是新编程,但一出来,就受到很长程序员的关注,而且刚出现和java进行对比,很多人就拿python和java进行比较,想python到底好不好,他和java有什么区 ...
最新文章
- R语言ggplot2可视化增大图例字体实战
- html5设置文字不能复制,网页文字不能复制?巧解网页文字不能复制
- Mysql中group by 使用中发现的问题
- oracle数据库重建em,oracle 11g em重建报唯一约束错误解决方法
- python3.5中文手册chm_python3.5.2官方帮助文档 参考手册(CHM版)
- 【Flutter】基础组件【08】BottomNavigationBar
- 【万恶之源~10大经典表情包出处】
- 百问网7天物联网智能家居 学习心得 打卡第七天
- 微商城分销系统开发方式需求与价格开发周期评估
- dw如何导入php站点,Dreamweaver CS6如何导入/导出站点?
- 美国白宫将探讨人工智能 概念股分析
- Pycharm提示No Python interpreter selected怎么解决
- uniapp 埋点(友盟)
- xp计算机远程桌面设置密码,远程桌面连接设置,详细教您xp怎么设置远程桌面连接...
- mediasoup transport dtls
- 笔记本越用越慢的解决方法。
- 北京10月meetup---drupal首页制作(转)
- 【C语言】conio.h 函数详解
- 微信云linux sdk下载,02.微信SDK下载及安装
- ubuntu 安装flash插件