为满足此次数理综合课程要求,需要有一个速度可控的电机
于是,此次项目就此诞生!!
器材介绍:
电机:直流有刷 MG513 加速比 10
(恶心的有刷,用 PWM 控的我好心碎啊)
单片机:STM32F103RCT6
最最简单的了,你只需要拥有一个 CubeMX
因为编码器返回的只是计数值,我们无法由此得到速度
因此,为了得到速度,我们必须确定在确定时间段内的计数值增长
所以我们另开一个时钟用来干这件事
- 选择是时钟源为
Internal Clock
- 配置
PSC
和ARR
(控制进入中断的频率) 中断进入频率计算公式$$f=\frac{Tclk}{(PSC+1)(ARR+1)},Tclk为时钟频率$$ 还有种说法$$f=\frac{Tclk}{PSC(ARR+1)}$$ 反正,现在不知道哪个对,反正也差别不大 - 打开中断
- 程序实现
- 首先开启时钟
HAL_TIM_Base_Start_IT(&htim2);//这个是打开定时器,并且开启中断 HAL_TIM_Base_Start(&htim2);//这个是打开定时器,但是不开启中断哦,被坑惨了T_T
- 然后写中断处理函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim == (&htim2)) { } }