金牌会员
 
- 积分
- 1729
- 金钱
- 1729
- 注册时间
- 2017-10-9
- 在线时间
- 145 小时
|
发表于 2020-6-9 20:56:51
|
显示全部楼层
/**
* @brief 定时器8通道4初始化
* @param arr 自动重装载值
* psc 分频
* @retval None
*/
void TIM8_CH4_Init(uint16_t arr, uint16_t psc)
{
RCC->APB2ENR |= 1 << 1; // 使能TIM8时钟
RCC->AHB1ENR |= 1 << 2; // 使能GPIOC时钟
GPIO_Set(GPIOC, PIN9, GPIO_MODE_AF, GPIO_OTYPE_PP, GPIO_SPEED_100M, GPIO_PUPD_PD);
GPIO_AF_Set(GPIOC, 9, 3); // PC9,AF3 TIM8
TIM8->ARR = arr; // 设定计算器自动重装载值
TIM8->PSC = psc; // 预分频器
TIM8->CCMR2 |= 1 << 8; // CC4S = 01 选择输入端 IC4映射到IT4上
TIM8->CCMR2 |= 0 << 12; // IC4F = 0000, 配置输入滤波器,不滤波
TIM8->CCMR2 |= 0 << 10; // IC4PS = 00 配置输入分频,不分频
TIM8->CCER |= 0 << 13; // CC4P = 0, 上升沿捕获
TIM8->CCER |= 1 << 12; // CC4E = 1, 使能捕获
TIM8->EGR |= 1 << 0; // 软件控制产生更新事件,使写入PSC的值立即生效,否则将会等到定时器溢出时才会生效!!!
TIM8->DIER |= 1 << 4; // 使能捕获4中断
TIM8->DIER |= 1 << 0; // 更新中断使能
TIM8->CR1 |= 0x01; // 使能定时器
MY_NVIC_Init(2, 1, TIM8_CC_IRQn, 2); // 抢占优先级2,子优先级0,组2
}
|
|