OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5122|回复: 11

LED

[复制链接]

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-28
在线时间
0 小时
发表于 2013-9-20 16:15:26 | 显示全部楼层 |阅读模式
        原子大哥,我买了你的Mini版的STM32。看了流水灯程序,我有两个问题:(1)有没有这条GPIOA->CRH&=0XFFFFFFF0;语句都不

影响LED灯亮,请问这条语句放在这有何作用?我觉得起作用的是GPIOA-这句>CRH|=0X00000002;(2)在LED.C中我发现GPIOA-

>ODR|=0X00000100或GPIOA->ODR|=0X00000000;;即无论给它高电平(1)还是低电平(0),或者没这一行,灯都亮,这是什么

原因啊?(从原理图上看不是只有低电平LED灯才亮的啊) 程序如下:
void LED_Init(void)
{
RCC->APB2ENR|=1<<2;    //使能PORTA时钟    
RCC->APB2ENR|=1<<5;    //使能PORTD时钟
   
//GPIOA->CRH&=0XFFFFFFF0; 
GPIOA->CRH|=0X00000002;//PA8 推挽输出    
    GPIOA->ODR|=0X00000000;      //PA8 输出高
 
//GPIOD->CRL&=0XFFFFF0FF;
GPIOD->CRL|=0X00000300;//PD.2推挽输出
GPIOD->ODR|=1<<2;      //PD.2输出高 
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-9-20 16:34:53 | 显示全部楼层
(1)&=  清零之前的设置。
(2)你给错端口了吧。。
一直努力就很好。
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-9-20 16:47:34 | 显示全部楼层
回复【2楼】qq942266575:

(1)&=  清零之前的设置。
(2)你给错端口了吧。。

---------------------------------
第二个没有,原子大哥的程序是GPIOA->ODR|=1<<8; 不就是第9个置1吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-20 17:58:21 | 显示全部楼层
回复【3楼】shenjianhua005:
---------------------------------
GPIOA->ODR|=1<<8; 是设置PA8=1。
至于第9还是第8,得看你从0开始数,还是从1开始数数。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-9-20 20:25:16 | 显示全部楼层
回复【4楼】正点原子:

回复【3楼】shenjianhua005:
---------------------------------
GPIOA->ODR|=1<<8; 是设置PA8=1。
至于第9还是第8,得看你从0开始数,还是从1开始数数。

---------------------------------
我回复【4楼】正点原子:

回复【3楼】shenjianhua005:
---------------------------------
GPIOA->ODR|=1<<8; 是设置PA8=1。
至于第9还是第8,得看你从0开始数,还是从1开始数数。

---------------------------------
回复【4楼】正点原子:

回复【3楼】shenjianhua005:
---------------------------------
GPIOA->ODR|=1<<8; 是设置PA8=1。
至于第9还是第8,得看你从0开始数,还是从1开始数数。

---------------------------------
我设置了PA8=0 结果LED灯还是亮,原子大哥这是怎么回事啊?
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-9-20 20:26:23 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我设置了PA8=0 结果LED灯还是亮,原子大哥这是怎么回事啊?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-20 21:00:06 | 显示全部楼层
PA8=0本来就应该亮啊。
PA8=1才灭的嘛。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-9-20 21:06:29 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子大哥 我在帖子上已经说了 就是ODR|=0X00000100或GPIOA->ODR|=0X00000000 这两种设置结果是一样的  就是LED灯还是亮。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-20 21:12:59 | 显示全部楼层
那是不可能的啊。
你肯定其他地方又设置了。。。
你直接下载我们跑马灯试试就知道了,如果按你的逻辑,跑马灯是不应该跑马了,都是全亮了。
如果真是这样,你的板子估计挂了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-9-20 21:43:22 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
原子大哥:这个GPIOA->ODR|=0X00000000;设置与LED0=0;是一样的吧,就是都是使LED0亮,如果是这样为什么我把程序改成     GPIOA->ODR|=0X00000000;      
delay_ms(300);
LED0=1;
就不是一亮一闪的 而是一亮一闪几次后就永远不亮了?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-20 22:35:42 | 显示全部楼层
GPIOA->ODR|=0X00000000;是废话,没任何作用的。详情请多了解C语言|=的使用方法。
所以一你后面的推论错误。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-9-20 22:40:29 | 显示全部楼层
回复【11楼】正点原子:

GPIOA->ODR|=0X00000000;是废话,没任何作用的。详情请多了解C语言|=的使用方法。 
所以一你后面的推论错误。

---------------------------------
问题解解决了,谢谢啦原子大哥。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 20:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表