stm32f103 系统时钟72MHZ 配置定时器3为50us中断一次 程序配置
时间: 2024-12-29 21:31:36 浏览: 26
STM32F103系列微控制器的系统时钟速度为72MHz时,要配置定时器3(Timer 3)以50μs(即每50微秒)产生一次中断,可以按照以下步骤操作:
1. **初始化定时器3**:
- 首先需要设置定时器3为通用定时器模式,比如TIM mode 1(PWM模式1),因为这允许外部计数输入并生成中断。
```c
TIM_TimeBaseInitTypeDef.TIM_TimeBaseStructure.TIM_Prescaler = (SystemCoreClock / 8) - 1; // Prescaler, using SysTick for 72 MHz clock (SysTick frequency is usually 16 MHz)
TIM_TimeBaseInitTypeDef.TIM_TimeBaseStructure.TIM_Period = 0x00FF; // Period value to get 50 us at 16 MHz prescaler
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_Cmd(TIM3, ENABLE); // Enable the timer
```
2. **配置定时器中断**:
- 设置定时器3溢出中断(TIMIER TI bit),每当计数值达到设定值时引发中断。
- 注册定时器3的中断服务函数,并启用中断请求。
```c
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); // Enable Update interrupt
NVIC_EnableIRQ(TIM3_IRQn); // Enable Interrupt in NVIC
```
3. **处理中断**:
- 创建中断服务函数`TIM3_IRQHandler()`,在其中更新中断处理逻辑,如计数、任务切换等,然后返回中断结束标志。
4. **启动定时器**:
- 调用`TIM_Cmd(TIM3, ENABLE)`命令启动定时器。
注意:这里的计算假设了系统时钟为72MHz,实际的周期计算可能需要考虑分频后的实际频率。另外,确保你的系统能够支持如此频繁的中断,并且在中断服务函数内处理的时间足够短,以免影响其他任务执行。
阅读全文