STM32F103C8T6外接32.768KHz晶振,怎么用它设置毫秒级延时函数
时间: 2023-08-16 19:06:28 浏览: 377
要使用外部晶振来实现毫秒级延时函数,可以通过定时器来实现。
首先,需要将STM32F103C8T6的系统时钟设置为使用外部晶振。具体的步骤可以参考ST官方文档。
然后,需要初始化一个定时器,并将其时钟源设置为外部晶振。例如,如果使用的是TIM2定时器,则可以使用以下代码:
```c
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // 开启TIM2时钟
TIM2->PSC = 0; // 不分频
TIM2->ARR = 32768 - 1; // 自动重装载值为晶振频率-1
TIM2->CR1 = TIM_CR1_ARPE; // ARR自动重装载
TIM2->CR2 |= TIM_CR2_MMS_1; // 设置触发输出
TIM2->EGR |= TIM_EGR_UG; // 立即更新寄存器
```
接着,在需要延时的地方,可以使用以下代码:
```c
TIM2->CNT = 0; // 清零计数器
TIM2->CR1 |= TIM_CR1_CEN; // 启动定时器
while (TIM2->CNT < delay_ms); // 等待计数器计满
TIM2->CR1 &= ~TIM_CR1_CEN; // 停止定时器
```
其中,`delay_ms`是需要延时的毫秒数。这段代码会启动定时器,并等待计数器计满后停止定时器,从而实现了毫秒级的延时功能。
需要注意的是,这种方法只能实现精度较低的延时,如果需要更高精度的延时,可以考虑使用定时器的捕获功能来实现。
阅读全文