stm32f103c8的开启TIM1定时器和定时器函数标准库代码
时间: 2023-10-23 20:14:36 浏览: 97
下面是stm32f103c8的开启TIM1定时器和定时器函数标准库代码:
```c
#include "stm32f10x.h"
void TIM1_Configuration(void);
int main(void)
{
TIM1_Configuration();
while(1)
{
//循环体
}
}
void TIM1_Configuration(void)
{
/* 开启TIM1时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 999; // 设置计数器自动重装值
TIM_TimeBaseStructure.TIM_Prescaler = 71; // 设置预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 设置时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 设置计数器计数模式为向上计数
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); // 初始化TIM1
TIM_Cmd(TIM1, ENABLE); // 开启TIM1
}
```
在上面的代码中,函数`TIM1_Configuration`实现了TIM1定时器的初始化和开启。在主函数`main`中,只需要调用`TIM1_Configuration`函数即可。
如果需要使用定时器中断,可以在`TIM1_Configuration`函数中加入中断配置相关代码,如下:
```c
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);
```
其中,`NVIC_InitStructure`结构体是用来配置中断优先级的,`TIM_ITConfig`函数用来开启定时器中断。在`TIM1_UP_IRQHandler`中断服务函数中编写中断处理代码即可。
阅读全文