dody1209 发表于 2020-7-12 21:48:20

初次使用stm32 LED不能点亮 请教各位

我使用的是普中Z100开发板,
led怎么都不能点亮,拜托各位前辈帮看看!!
程序如下:

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

#include "system.h"
#define Delay(n) while((n)--)
       

void Rcc_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);       
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
       RCC_HCLKConfig(RCC_SYSCLK_Div1);
       RCC_PCLK2Config(RCC_HCLK_Div1);       
       RCC_PCLK1Config(RCC_HCLK_Div2);
       FLASH_SetLatency(FLASH_Latency_2);
   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);               
       
   RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);               
       RCC_PLLCmd(ENABLE);
       while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
       RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
       while(RCC_GetSYSCLKSource()!=0x80);
       }
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);       
}
       
void GPIO_Configuration(void)       
{
GPIO_InitTypeDef GPIO_InitStructure;
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);               
}
       
int main(void)
{
vu32 n=2000000;
Rcc_Configuration();
GPIO_Configuration();
       
while(1)
   {
    GPIO_SetBits(GPIOB,GPIO_Pin_5);
    Delay(n);       
    GPIO_ResetBits(GPIOB,GPIO_Pin_5);
    Delay(n);       
          }
}


mylovemcu 发表于 2020-7-13 08:08:49

检查时钟配置有没有问题
如果是新手刚上手建议使用cubmx进行初始化配置效率更高

数码小叶 发表于 2020-7-13 08:40:34

单步调试,看程序停在那个地方,程序都不一定运行到了whie循环

xudongqiang 发表于 2020-7-13 08:48:24

延时太短了?

dody1209 发表于 2020-7-13 19:25:45

mylovemcu 发表于 2020-7-13 08:08
检查时钟配置有没有问题
如果是新手刚上手建议使用cubmx进行初始化配置效率更高 ...

十分感谢!我是新手,除了程序中的时钟配置,在option之类的环境中还有什么配置吗?
cubmx没用过,之后尝试一下。

cdlongbo 发表于 2020-7-14 11:26:39

1.检查电路 2.检查时钟配置 3.IO口配置4.引脚输出
就这4个项目 一定会帮到你的

jeffhe1 发表于 2020-7-14 14:04:08

你是使用外部 crystal , 用示波器量看看 有無振起 ?
再檢查 GPIOB 的 clock 確定是 RCC_APB2
假如都對 , 再檢查LED電路 是否會亮
假如會亮 , 再確認 delay 時間夠不夠:P

jundao721 发表于 2020-7-14 14:27:41

参考一下例程,除了程序还有option的配置,仿真个例程先确定硬件部分没问题,然后再修改软件。

dataozi 发表于 2020-7-14 16:51:14

用示波器看一下 HSE起振了吗?然后在看一下BOOT0 Boot1的配置,然后再看一下 延时会不会太短了,如果你用的是8MHZ的外部晶振 那么系统时钟是72MHZ 延时很快的。

butterflyspring 发表于 2020-7-17 09:58:45

使用调试手段,在IO翻转处打断点,看看输入脚状态寄存器是否正确,再用示波器或万用表量测一下。 至于软件学习方面,一般都是跑跑官方的例程,仔细学习一下能比较快速上手
页: [1] 2
查看完整版本: 初次使用stm32 LED不能点亮 请教各位