我正在玩我的
STM32l152 发现板。我有液晶显示器,按钮,LED 工作。我想将我的时钟速度更改为 16Mhz HSI(默认 2Mhz MSI)并且问题开始了。
为了编写我的代码,我使用 RM - 但我遗漏了一些东西。这个配置应该怎么做?
有我的时钟设置代码:(如果需要我可以上传整个项目)
- RCC->CR |= (RCC_CR_HSION); //enable high-speed internal oscillator
- while(!(RCC->CR & RCC_CR_HSIRDY)); //wait until oscillator starts
- RCC->CFGR |= RCC_CFGR_SW_HSI; //set hsi as systemclk
- while((RCC->CR & RCC_CFGR_SWS_HSI)!= RCC_CFGR_SWS_HSI);
- RCC->CFGR |= (RCC_CFGR_MCOSEL_SYSCLK); //set mco output to sysclk
- RCC->AHBENR |= (RCC_AHBENR_GPIOAEN); //enable clock for PORTA peripheral
- RCC->AHBENR |= (RCC_AHBENR_GPIOBEN); //enable clock for PORTB peripheral
- RCC->AHBENR |= (RCC_AHBENR_GPIOCEN); //enable clock for PORTC peripheral
这是在 main() 之后。这是正确的方法吗?
实际发生了什么:
重置后处理器并不总是启动(led 不闪烁)。当它有时启动时 - MCO 输出上的信号不是每次都出现(2/10 次?)而且 - LED 有时在 2Mhz 时钟上闪烁,有时在 16Mhz 时钟上闪烁(不知何故返回默认值?)。