[应用相关] stm32的gpio设置led的问题?

[复制链接]
 楼主| fhguo1990 发表于 2015-4-17 22:20 | 显示全部楼层 |阅读模式
gpio模式设置为GPIO_Mode_Out_PP:

  //LED:
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

#define LED2(tmp) (GPIOB->ODR=(tmp?(GPIOB->ODR|1<<7):(GPIOB->ODR&(~(1<<7)))))

可是led只有初始化设置的时候有效,之后在设置,就无效了;
无法达到间隔着一亮一灭,只能要么一直亮,要么一直灭,太奇怪了~~~~~~~

我是MT 发表于 2015-4-17 22:20 | 显示全部楼层
你的代码只是设置了GPIO的模式吧

用SetBits和 Reset函数控制高低电平不就想亮就凉  想灭就灭了
 楼主| fhguo1990 发表于 2015-4-17 22:21 | 显示全部楼层
是啊,我也试过SetBits和 Reset函数,
反正也只是第一次设置有效,以后再调用这两个函数就无效
 楼主| fhguo1990 发表于 2015-4-17 22:22 | 显示全部楼层
#define LED2(tmp) (GPIOB->ODR=(tmp?(GPIOB->ODR|1<<7):(GPIOB->ODR&(~(1<<7)))))

我也用ODR寄存器控制高低电平,应该也一样吧?
我是MT 发表于 2015-4-17 22:22 | 显示全部楼层
帖个完整代码 看看呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

254

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部