OpenEdv-开源电子网

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

控制GPIO输出不成功,LED灯不正常

[复制链接]

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2015-9-28
在线时间
16 小时
发表于 2015-10-3 22:29:47 | 显示全部楼层 |阅读模式
5金钱
是这样的,我用的f103vet6,采用的是库开发方式。结果控制4颗LED亮,实际却是只有一颗亮。代码如下:

led.h
[mw_shl_code=c,true]#ifndef __LED_H #define __LED_H #include "stm32f10x.h" #define ON 0 #define OFF 1 #define LED1(a) if(a) \ GPIO_ResetBits(GPIOD,GPIO_Pin_8);\ else \ GPIO_SetBits(GPIOD,GPIO_Pin_8) #define LED2(a) if(a) \ GPIO_ResetBits(GPIOD,GPIO_Pin_9);\ else \ GPIO_SetBits(GPIOD,GPIO_Pin_9) #define LED3(a) if(a) \ GPIO_ResetBits(GPIOD,GPIO_Pin_10);\ else \ GPIO_SetBits(GPIOD,GPIO_Pin_10) #define LED4(a) if(a) \ GPIO_ResetBits(GPIOD,GPIO_Pin_11);\ else \ GPIO_SetBits(GPIOD,GPIO_Pin_11) void LED_GPIO_Config(void); #endif [/mw_shl_code]
led.c
[mw_shl_code=c,true]#include "led.h" void LED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 ; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 ; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 ; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_SetBits(GPIOD,GPIO_Pin_8); GPIO_SetBits(GPIOD,GPIO_Pin_9); GPIO_SetBits(GPIOD,GPIO_Pin_10); GPIO_SetBits(GPIOD,GPIO_Pin_11); } [/mw_shl_code]
main.c
[mw_shl_code=c,true]#include "stm32f10x.h" #include "led.h" void Delay(__IO u32 nCount); int main(void) { LED_GPIO_Config(); while(1) { Delay(0x0fffef); LED1(ON); Delay(0x0fffef); LED2(ON); Delay(0x0fffef); LED3(ON); Delay(0x0fffef); LED4(ON); Delay(0x0fffef); } } void Delay(__IO u32 nCount) { for(; nCount !=0; nCount-- ); } [/mw_shl_code]


最佳答案

查看完整内容[请看2#楼]

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,  ENABLE);
——By Dr. Heinz Doofenshmirtz
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2015-10-3 22:29:48 | 显示全部楼层
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,  ENABLE);
小小蜗牛
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-10-4
在线时间
0 小时
发表于 2015-10-4 15:52:53 | 显示全部楼层
#define LED1(a) if(a) \
09                                             GPIO_ResetBits(GPIOD,GPIO_Pin_8);\
10                                             else \
11                                             GPIO_SetBits(GPIOD,GPIO_Pin_8)

这句反了。
回复

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2015-9-28
在线时间
16 小时
 楼主| 发表于 2015-10-4 15:59:59 | 显示全部楼层
回复【2楼】jiutianshenjian:
---------------------------------
谢谢,我也发现是这个问题
——By Dr. Heinz Doofenshmirtz
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-8-22
在线时间
0 小时
发表于 2015-10-4 17:33:27 | 显示全部楼层
GPIO_InitStructure.GPIO_Pin   这个结构体变量  是不是被重复赋值了,所以你就只有一个管脚被初始化
回复

使用道具 举报

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2015-9-28
在线时间
16 小时
 楼主| 发表于 2015-10-4 23:43:38 | 显示全部楼层
回复【5楼】叫兽:
不是的,是这句RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,  ENABLE);
——By Dr. Heinz Doofenshmirtz
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 12:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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