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

来源:互联网 发布:java 工具监控磁盘io 编辑:程序博客网 时间:2024/05/08 14:10

以 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);         } 


1 0
原创粉丝点击