TIM定时器_CNT_ARR_PSC_CRR

TIM时钟频率72M
PSC=71,TIM时钟经PSC分频后得CNT计数器时钟频率,72M/(71+1)=1MHz.
CNT从0计数到ARR后产生中断,计数器清零开始重新计数.ARR即周期
CCR:库函数将Pulse写入CCR寄存器,CCR输出比较寄存器与CNT比较,当CNT小于设置得值输出高电平,否则输出高电平。

以上为我个人得理解 有不对的地方欢迎大家指正补充

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: TIM1_CNT产生溢出中断时的中断通道配置代码可以根据具体的需求而有所不同,以下是一个可能的示例: ```c // 使能TIM1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); // 配置TIM1的基本参数 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 65535; // 设置自动重载寄存器的值 TIM_TimeBaseStructure.TIM_Prescaler = 719; // 设置预分频值 TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); // 使能TIM1的溢出中断 TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE); // 配置中断通道 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; // TIM1的溢出中断对应的中断通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); // 启动TIM1 TIM_Cmd(TIM1, ENABLE); ``` 在上述代码中,首先使用`RCC_APB2PeriphClockCmd()`函数使能TIM1的时钟,然后配置了TIM1的基本参数,包括自动重载寄存器的值和预分频值。接下来,使用`TIM_ITConfig()`函数使能TIM1的溢出中断。最后,使用`NVIC_Init()`函数配置TIM1的溢出中断对应的中断通道,并启动TIM1。 ### 回答2: 当TIM1_CNT产生溢出中断时,需要进行中断通道的配置。下面是配置代码的例子: 首先,确保TIM1时钟被使能。例如,可以使用下列代码启用TIM1的时钟: ```c RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); ``` 接下来,配置TIM1溢出中断。 首先,使能TIM1的溢出中断。可以通过以下代码实现: ```c TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE); ``` 然后,配置NVIC(Nested Vectored Interrupt Controller)来使能TIM1中断。 先定义一个NVIC_InitTypeDef类型的变量,如: ```c NVIC_InitTypeDef NVIC_InitStructure; ``` 然后,为TIM1配置中断优先级。可以使用以下代码设置中断优先级: ```c 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); ``` 其中,TIM1_UP_IRQn表示TIM1产生溢出中断的中断向量。 最后,在ATIM1的初始化代码中,启用中断发送。例如: ```c TIM_ClearFlag(TIM1, TIM_FLAG_Update); TIM_Cmd(TIM1, ENABLE); ``` 以上是使用中断的配置代码。在TIM1_CNT产生溢出时,中断程序将被触发执行。 ### 回答3: 在STM32中配置TIM1_CNT产生溢出中断的中断通道,可以使用以下代码: 首先,需要在中断向量表中配置TIM1的中断处理函数。在汇编文件startup_stm32.s中,找到TIM1_IRQHandler标签,并在其下方添加一个跳转指令,跳转到我们要定义的中断处理函数。 TIM1_IRQHandler: B .Tim1_Overflow_Handler 然后,在主程序的C文件中,定义TIM1的中断处理函数Tim1_Overflow_Handler。此函数将会在TIM1_CNT溢出时被调用,进行相应的处理逻辑。 void Tim1_Overflow_Handler(void) { // 这里执行当TIM1_CNT溢出时的处理逻辑 } 接下来,在主程序中进行中断通道配置。我们需要启用TIM1的中断,并将中断优先级设置为所需的值。以下是配置代码的示例: // 使能TIM1的中断 NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn); // 设置TIM1的中断优先级 NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0); 其中,TIM1_UP_TIM10_IRQn是TIM1的溢出中断对应的中断号。NVIC_EnableIRQ()函数用于使能中断,NVIC_SetPriority()函数用于设置中断优先级。将中断优先级设置为0表示最高优先级。 最后,记得在TIM1初始化代码中启用溢出中断。以下是TIM1初始化的示例代码: TIM1->CR1 |= TIM_CR1_URS; // 只有在计数器溢出时产生中断 TIM1->DIER |= TIM_DIER_UIE; // 使能溢出中断 这样,当TIM1的计数器CNT达到最大值时,即产生溢出,就会触发TIM1的中断,执行Tim1_Overflow_Handler()函数中的处理逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值