1.对电机进行驱动——
就是pwm,一样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); TIM_InitStructure.TIM_Prescaler = 719; TIM_InitStructure.TIM_Period = 99; TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_InitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM1,&TIM_InitStructure); TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE); NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_Cmd(TIM1,ENABLE);
Car_State = STOP; Car_PWM = 0; OLED_Print(8,0, (uint8_t *)"STA:STOP ",TYPE8X16,TYPE6X8); OLED_Print(72, 0, (uint8_t *)"SPEED:00",TYPE8X16,TYPE6X8); }
|
分频的计算方式
是
TIM_TimeBaseStructure.TIM_Prescaler = 71; // PSC
计数频率=芯片频率/(预分频值PSC+1)
解释:预分频值的数字表示n个竖杠,将整体分成n+1个计数区域
TIM_TimeBaseStructure.TIM_Period = 999; // ARR
PWM波的信号周期=(自动重装载寄存器的值(ARR)+1)/记数频率
TIM_InitStructure.TIM_ClockDivision = 0; //时钟分频因子
TIM_CKD_DIV1:对应的值为 0x00,意味着时钟分频因子为 1,也就是不对定时器的输入时钟进行额外的分频。
TIM_CKD_DIV2:对应的值为 0x01,时钟分频因子为 2,即把输入时钟频率除以 2。
TIM_CKD_DIV4:对应的值为 0x02,时钟分频因子为 4,也就是将输入时钟频率除以 4。
2.舵机轮子左右
3.蓝牙模块
判别收到的数据
*** 这是我现阶段负责的红外模块的代码笔记
传到oled显示需要设变量传递
然后按位运算,移位加减,刚好可以利用上for,是技巧了
ir