有高低电平交换为什么LED还是常亮?

2019-08-20 15:48发布

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
/**
        GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);  设置为高电平 参数: 哪一组IO 哪一个IO
  GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 设置为低电平参数: 哪一组IO 哪一个IO

        **/
int main(void)
{
        led_init();
        while(1)
        {
                GPIO_ResetBits(GPIOA, GPIO_Pin_8);
                GPIO_ResetBits(GPIOD,GPIO_Pin_2);
                //for(int i=0;i<500;i++);
                delay_ms(300);
               
                GPIO_SetBits(GPIOA,GPIO_Pin_8);
                GPIO_SetBits(GPIOD,GPIO_Pin_2);
                //for(int i=0;i<500;i++);
                delay_ms(300);
               
        }
}

以上是main 函数代码,好像是停止在第一个delay_ms(300); 处一样,使得LED常亮,不知道为什么 ,求助

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
来俩不甜的
1楼-- · 2019-08-20 18:07
擦,被前几楼误导了,你delay函数都没初始化,你delay_ms肯定不能用
烟酒不沾
2楼-- · 2019-08-20 20:13
 精彩回答 2  元偷偷看……
15937417823
3楼-- · 2019-08-20 22:47
你在程序中加上一个printf("1");,通调整位置,看串口助手是否收到1,来看程序运行到哪里了。这是没有断电等等那些时候,判断程序运行的一个小方法
275891381
4楼-- · 2019-08-21 01:03
余晖效应吧,delay_ms(300);改成delay_ms(1000);试试
来俩不甜的
5楼-- · 2019-08-21 06:45
把点亮PA8,熄灭PD2设为一组   ; 熄灭PA8,点亮PD2设为一组,如果停在delay_ms 那就是一亮一灭,否则还是全亮,说明你delay_ms并不是延时300ms
lvehe
6楼-- · 2019-08-21 09:36
估计led_init函数有问题,初始化不正常

一周热门 更多>