初次使用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);
}
}
检查时钟配置有没有问题
如果是新手刚上手建议使用cubmx进行初始化配置效率更高 单步调试,看程序停在那个地方,程序都不一定运行到了whie循环 延时太短了? mylovemcu 发表于 2020-7-13 08:08
检查时钟配置有没有问题
如果是新手刚上手建议使用cubmx进行初始化配置效率更高 ...
十分感谢!我是新手,除了程序中的时钟配置,在option之类的环境中还有什么配置吗?
cubmx没用过,之后尝试一下。 1.检查电路 2.检查时钟配置 3.IO口配置4.引脚输出
就这4个项目 一定会帮到你的 你是使用外部 crystal , 用示波器量看看 有無振起 ?
再檢查 GPIOB 的 clock 確定是 RCC_APB2
假如都對 , 再檢查LED電路 是否會亮
假如會亮 , 再確認 delay 時間夠不夠:P 参考一下例程,除了程序还有option的配置,仿真个例程先确定硬件部分没问题,然后再修改软件。 用示波器看一下 HSE起振了吗?然后在看一下BOOT0 Boot1的配置,然后再看一下 延时会不会太短了,如果你用的是8MHZ的外部晶振 那么系统时钟是72MHZ 延时很快的。 使用调试手段,在IO翻转处打断点,看看输入脚状态寄存器是否正确,再用示波器或万用表量测一下。 至于软件学习方面,一般都是跑跑官方的例程,仔细学习一下能比较快速上手
页:
[1]
2