或闻 2021-10-29 00:18 采纳率: 100%
浏览 130
已结题

stm32流水灯程序编写成功,却无法实现点灯,求指出问题

学习点灯,写了一个编译成功的程序,但无法实现点灯,以下是程序:
main.c

#include "stm32f10x.h"
#include "led.h"

#define SOFT_Delay Delay(0xFFFFF);
void Delay(__IO u32 nCount);
int main(void)
{
    LED_GPIO_Config();
    
    while(1)
    {
      GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_Pin);
        GPIO_SetBits(LED3_GPIO_PORT, LED3_GPIO_Pin);
        GPIO_ResetBits(LED2_GPIO_PORT, LED2_GPIO_Pin);
    SOFT_Delay;
      
        GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_Pin);
        GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_Pin);
        GPIO_ResetBits(LED3_GPIO_PORT, LED3_GPIO_Pin);
        SOFT_Delay;
     
        GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_Pin);
        GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_Pin); 
        GPIO_ResetBits(LED3_GPIO_PORT, LED3_GPIO_Pin); 
        SOFT_Delay;
      
    
    }
        
    
} 

void Delay(__IO uint32_t nCount)
{
for(;nCount!=0;nCount--);
}


led.h

#ifndef __LED_H
#define __LED_H


#include "stm32f10x.h"


#define LED1_GPIO_Pin   GPIO_Pin_5
#define LED1_GPIO_PORT  GPIOB
#define LED1_GPIO_CLK   RCC_APB2Periph_GPIOB

#define LED2_GPIO_Pin   GPIO_Pin_0
#define LED2_GPIO_PORT  GPIOB
#define LED2_GPIO_CLK   RCC_APB2Periph_GPIOB

#define LED3_GPIO_PORT  GPIOB
#define LED3_GPIO_CLK   RCC_APB2Periph_GPIOB
#define LED3_GPIO_Pin   GPIO_Pin_1


 

 

void LED_GPIO_Config(void);

#endif


led.c

#include "led.h"

void LED_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphResetCmd(LED1_GPIO_CLK|LED2_GPIO_CLK|LED3_GPIO_CLK,ENABLE);
    GPIO_InitStructure.GPIO_Pin=LED1_GPIO_Pin;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(LED1_GPIO_PORT,&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin=LED2_GPIO_Pin;
    GPIO_Init(LED2_GPIO_PORT,&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin=LED3_GPIO_Pin;
    GPIO_Init(LED3_GPIO_PORT,&GPIO_InitStructure);
     

}


编译是没有问题的,但是烧录到板子上却无法实现点灯,求指导一下到底是为什么?

  • 写回答

2条回答 默认 最新

  • qq_41851997 2021-10-29 08:58
    关注

    main函数先这样改,看程序有没有跑起来,反正就是让灯全部亮,至于是拉高亮还是拉低亮就自己看看原理图。如果灯没亮可能程序没跑起来,建议拿一个可以运行的模板,然后替换自己的代码上去

    int main(void)
    {
        LED_GPIO_Config();
          GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_Pin);
            GPIO_SetBits(LED3_GPIO_PORT, LED3_GPIO_Pin);
            GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_Pin);
        while(1)
        {
        }
    } 
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月29日

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算