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
RE:Turn_On_LED函数的执行效率
你可以直接对寄存器操作。类似于#define GPIO_LEDGPIOB->BSRR(BRR)=GPIO_Pin_6
然后对管脚操作。但是这样只能定义高和低,你这样写
GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
只能是拉低某个引脚,初始化DS4_PIN=0x0001。
这样操作是在灯全灭的时候,依次点亮。但是点亮以后,就不能再依次点亮了。因为他们全部是亮的,所以你的操作是看不到效果的。
RE:Turn_On_LED函数的执行效率
我写的那个函数已经调试通过了,这里想请教不同实现方法在执行效率上的差别。void Turn_On_LED(u8 LED_NUM)
{
GPIO_ResetBits(GPIO_LED, DS1_PIN
页:
[1]