你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3024|回复: 2

Turn_On_LED函数的执行效率

[复制链接]

2

主题

51

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2011-3-24 23:56:36 | 显示全部楼层 |阅读模式
 在神舟开发板的流水灯例程中有个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
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-3-25 15:36:03 | 显示全部楼层

RE:Turn_On_LED函数的执行效率

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

使用道具 举报

2

主题

51

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2011-3-25 18:32:57 | 显示全部楼层

RE:Turn_On_LED函数的执行效率

我写的那个函数已经调试通过了,这里想请教不同实现方法在执行效率上的差别。
void Turn_On_LED(u8 LED_NUM)
{
GPIO_ResetBits(GPIO_LED, DS1_PIN
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版