STM32 下的库函数和寄存器操作比较
2015-08-15 11:10
375 查看
以 led闪烁中的flashLed函数例子:
库函数操作简单,但是效率不如寄存器操作的高; 寄存器操作很复杂,因为要熟悉上百个寄存器,但是程序效率很高
/**下面是通过直接操作库函数的方式实现IO控制**/ while(1) { GPIO_ResetBits(GPIOB,GPIO_Pin_9); //LED0对应引脚GPIOF.9拉低,亮 等同LED0=0; GPIO_SetBits(GPIOB,GPIO_Pin_10); //LED1对应引脚GPIOF.10拉高,灭 等同LED1=1; delay_ms(500); //延时300ms GPIO_SetBits(GPIOB,GPIO_Pin_9); //LED0对应引脚GPIOF.0拉高,灭 等同LED0=1; GPIO_ResetBits(GPIOB,GPIO_Pin_10); //LED1对应引脚GPIOF.10拉低,亮 等同LED1=0; delay_ms(500); //延时300ms }
/** *******************下面注释掉的代码是通过 位带 操作实现IO口控制**************************************/ int main(void) { delay_init(168); //初始化延时函数 LED_Init(); //初始化LED端口 while(1) { LED0=0; //LED0亮 LED1=1; //LED1灭 delay_ms(500); LED0=1; //LED0灭 LED1=0; //LED1亮 delay_ms(500); } } /************************************************************************************************** **/ /** *******************下面注释掉的代码是通过 直接操作寄存器 方式实现IO口控制**************************************/ int main(void) { delay_init(168); //初始化延时函数 LED_Init(); //初始化LED端口 while(1) { GPIOF->BSRRH=GPIO_Pin_9;//LED0亮 GPIOF->BSRRL=GPIO_Pin_10;//LED1灭 delay_ms(500); GPIOF->BSRRL=GPIO_Pin_9;//LED0灭 GPIOF->BSRRH=GPIO_Pin_10;//LED1亮 delay_ms(500); } } /************************************************************************************************** **/
/*我想说我更喜欢这样的,呵呵*/ while(1) { //FlashLED(); *(unsigned int*)(0x40010c0c) |=0x200 ; delay_ms(100); *(unsigned int*)(0x40010c0c) &=0xfffffdff ; delay_ms(100); }
相关文章推荐
- STM32 下的库函数和寄存器操作比较
- 实现Pop3s&maildrop(有错待解决)
- 通过格式良好的SQL提高效率和准确性
- 常用Sql语句及sql数据类型
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- 小贝_php+redis简单实例
- 【基础练习】【线性DP+离散化】codevs1105 过河题解
- APM源码分析之 主流程
- uva 438 - The Circumference of the Circle(几何)
- ios文摘https和多线程
- GPIO 最简 操作步骤
- hdu 5387 Clock
- 实现音乐播放器后台Service服务一直存在的解决思路
- 堆栈问题
- 【Android】 -- 使用UncaughtExceptionHandler捕捉全局异常
- APM源码分析之 姿态控制
- 快速返回顶部
- 给csdn的建议
- 数据库总结
- AppDelegate 、UIApplication 简单的用法