项目场景:
项目场景:初次接触STM32单片机的使用,选择点亮一个LED的项目入手。为了更加深入的了解STM32,通过寄存器的方式去编写自己的项目。
问题描述
起初通过库函数的方式编写代码,配置好系统时钟和GPIO外设时钟后,成功点亮LED灯,对库函数的代码进行简单的解读后,再借助CSDN创作助手的AI工具对系统时钟进行配置,AI工具的配置系统时钟的代码如下。联合以前的代码,烧入后发现无法点亮LED灯。
以下是配置STM32F103CBT6使用内部高速时钟配置64MHz系统时钟的代码示例:
#include "stm32f1xx.h"
void SystemClock_Config(void);
int main(void)
{
// 配置系统时钟
SystemClock_Config();
// 你的代码
while (1)
{
// 主循环
}
}
void SystemClock_Config(void)
{
// 启用内部高速时钟(HSI)
RCC->CR |= RCC_CR_HSION;
// 等待HSI稳定
while ((RCC->CR & RCC_CR_HSIRDY) == 0);
// 选择HSI作为系统时钟
RCC->CFGR &= ~RCC_CFGR_SW;
RCC->CFGR |= RCC_CFGR_SW_HSI;
// 等待HSI成为系统时钟
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI);
// 启用FLASH预取缓存
FLASH->ACR |= FLASH_ACR_PRFTBE;
// 设置FLASH延迟
FLASH->ACR |= FLASH_ACR_LATENCY_1;
// 配置PLL分频因子和