新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2018-6-13
- 在线时间
- 6 小时
|
1金钱
1. 在学了正点原子的PWM输出实验后,发现他的PWM输出引脚正好是LED的引脚,因此可以使LED暂明暂暗。但是,我这里有份PWM控制小车的代码,配置如下:
[mw_shl_code=c,true] motor_RR = new motor_driver(htim5, -1, htim1, TIM_CHANNEL_3, 999, GPIOC, GPIO_PIN_3, GPIO_PIN_5);
motor_RL = new motor_driver(htim4, 1, htim1, TIM_CHANNEL_4, 999, GPIOC, GPIO_PIN_1, GPIO_PIN_13);
motor_FR = new motor_driver(htim2, -1, htim1, TIM_CHANNEL_2, 999, GPIOB, GPIO_PIN_0, GPIO_PIN_2);
motor_FL = new motor_driver(htim3, 1, htim1, TIM_CHANNEL_1, 999, GPIOB, GPIO_PIN_1, GPIO_PIN_12); [/mw_shl_code]
上面的GPIOX是小车的四个轮子的八种状态对应的一个引脚(一个轮子有两个状态正转反转)。但是,timx的channel也就是PWM的输出引脚和GPIOX的引脚(连接小车的八个引脚)没有连接关系,那么这个PWM波怎么输出到小车的?
我暂且认为的答案是:tim的channel也就是PWM的输出引脚连接到小车的另外四个接线,那么小车就有八个GPIOX引脚接线+PWM引脚接线=一共12个引脚接线。不知道这么理解对不对?
2. 还有一个问题是:计算小车当前的rpm,代码如下:
[mw_shl_code=c,true]tick_cur = get_tick_inc();
cur_milli_time = Millisecond();
delta_mins_time = (cur_milli_time - last_milli_time)/60000.0;
rpm_cur = (tick_cur / _ticks_per_rev) / delta_mins_time;[/mw_shl_code]
可以看到,他是通过tim的tick数来计算的,这里面的_ticks_per_rev(每转一圈的tick数)是常量。但是,PWM波不是控制小车的车速吗?小车的车速是变化的,那么_ticks_per_rev应该也是变化的吧!
|
|