OpenEdv-开源电子网

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

关于led灯初始化的问题,急求回答,感谢感谢

[复制链接]

4

主题

15

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-5-1
在线时间
18 小时
发表于 2019-7-6 17:31:04 | 显示全部楼层 |阅读模式
5金钱
在做一个程序,要求在led呼吸灯跟闪烁灯两种状态之间切换,但是配置这两种模式初始化是一个是复用推挽输出,一个是推挽输出,这该怎么办!!!!急求急求
这样只能出现一种LED灯状态

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

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-7-6 17:31:52 | 显示全部楼层
回复

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-7-6 17:32:13 | 显示全部楼层
按键切换吗
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-5-1
在线时间
18 小时
 楼主| 发表于 2019-7-6 17:33:25 | 显示全部楼层

串口接收判断切换
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-5-1
在线时间
18 小时
 楼主| 发表于 2019-7-6 17:34:31 | 显示全部楼层

初始化我只会初始化一种,不会在推挽输出跟复用推挽输出之间转换
回复

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-7-6 17:37:30 | 显示全部楼层

void led_init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;   //50mhz
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOB,&GPIO_InitStructure);
}
回复

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-7-6 17:38:07 | 显示全部楼层
我写led闪烁和呼吸灯都是这么配置的,运行正常,没出现什么问题
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-5-1
在线时间
18 小时
 楼主| 发表于 2019-7-6 17:40:36 | 显示全部楼层
1599064432 发表于 2019-7-6 17:38
我写led闪烁和呼吸灯都是这么配置的,运行正常,没出现什么问题

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
这两个没见过???为啥我配置只有上面三个
回复

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-7-6 17:42:54 | 显示全部楼层
爱飞行的驴 发表于 2019-7-6 17:40
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
...

我这是030的片子
回复

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-7-6 17:45:17 | 显示全部楼层
爱飞行的驴 发表于 2019-7-6 17:40
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
...

void led_gpio_init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA);        //打开GPIO时钟
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA,&GPIO_InitStructure);                        //初始化
}


这是103的
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-5-1
在线时间
18 小时
 楼主| 发表于 2019-7-6 17:53:13 | 显示全部楼层
1599064432 发表于 2019-7-6 17:45
void led_gpio_init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

对,配置成这个GPIO_Mode_Out_PP,pwm做呼吸灯不会亮
回复

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2019-6-22
在线时间
34 小时
发表于 2019-7-7 18:58:03 | 显示全部楼层
你可以直接操作寄存器来改变复用推挽输出和推挽输出,推挽的话要全部都重新定义
RCC->APB2ENR|=1<<3;
RCC->APB2ENR|=1<<6;
GPIOB->CRL&=0XFF0FFFFF;
GPIOB->CRL|=0X00300000;
GPIOB->ODR|=1<<5;
//GPIOE->CRL&=0XFF0FFFFF;
//GPIOE->CRL|=0X00300000;
//GPIOE->ODR|=1<<5; ,
复用推挽的话直接 GPIOB->CRL|=0X00B00000;          这样就行了
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-7-7
在线时间
1 小时
发表于 2019-7-7 20:53:22 | 显示全部楼层
可以封装成两个函数来分别调用?
回复

使用道具 举报

10

主题

212

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2019-4-8
在线时间
226 小时
发表于 2019-7-12 15:36:11 | 显示全部楼层
楼主搞定了没
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-7-13 10:15:19 | 显示全部楼层
本帖最后由 edmund1234 于 2019-7-13 10:31 编辑

为啥要切换?闪烁灯不能用PWM驱动?别自找麻烦了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 00:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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