STM32 下的库函数和寄存器操作比较

以 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);//延时300msGPIO_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 下的库函数和寄存器操作比较

相关文章:

你感兴趣的文章:

标签云: