Rockrush-256113 发表于 2011-3-24 23:56:36

Turn_On_LED函数的执行效率

 在神舟开发板的流水灯例程中有个Turn_On_LED函数用以点亮指定LED灯。函数实现:
 
 
void Turn_On_LED(u8 LED_NUM)
{
        switch(LED_NUM)
        {
        case 0:
          GPIO_ResetBits(GPIO_LED,DS1_PIN);  /*点亮DS1灯*/
          break;
        case 1:
          GPIO_ResetBits(GPIO_LED,DS2_PIN);  /*点亮DS2灯*/
          break;
        case 2:
          GPIO_ResetBits(GPIO_LED,DS3_PIN);  /*点亮DS3灯*/
          break;
        case 3:
          GPIO_ResetBits(GPIO_LED,DS4_PIN);  /*点亮DS4灯*/
          break;          
        default:
                GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN); /*点亮所有的灯*/
          break;
        }
}
 
这么多,感觉很不舒服,试着写了另一个方法:
 
GPIO_ResetBits(GPIO_LED, DS1_PIN

发表于 2011-3-25 15:36:03

RE:Turn_On_LED函数的执行效率

你可以直接对寄存器操作。类似于
#define GPIO_LEDGPIOB->BSRR(BRR)=GPIO_Pin_6
然后对管脚操作。但是这样只能定义高和低,你这样写
GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
只能是拉低某个引脚,初始化DS4_PIN=0x0001。
这样操作是在灯全灭的时候,依次点亮。但是点亮以后,就不能再依次点亮了。因为他们全部是亮的,所以你的操作是看不到效果的。

Rockrush-256113 发表于 2011-3-25 18:32:57

RE:Turn_On_LED函数的执行效率

我写的那个函数已经调试通过了,这里想请教不同实现方法在执行效率上的差别。
void Turn_On_LED(u8 LED_NUM)
{
GPIO_ResetBits(GPIO_LED, DS1_PIN
页: [1]
查看完整版本: Turn_On_LED函数的执行效率