- 阅读下面的程序,写出注释,并简述其实现的功能。已知PC10和PC11连接的是直流电机的输入引脚,rf为串行通信的标志位,cmpv为PWM输出信号的占空比。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) //(中断回调函数)
{
if(GPIO_Pin==GPIO_PIN_0)
//若GPIO_Pin测试等于GPIO_PIN_0(若GPIO_PIN_0按键按下)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,GPIO_PIN_RESET);
}else if(GPIO_Pin==GPIO_PIN_2)
{
if(cmpv<100)
cmpv=cmpv+10; //占空比在原有基础上加10
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,cmpv);
//设置定时器3通道4的PWM输出占空比
}
else if(GPIO_Pin==GPIO_PIN_3)
{
if(cmpv>0)
cmpv=cmpv-10;
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,cmpv);
}else if(GPIO_Pin==GPIO_PIN_4)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11|GPIO_PIN_10,GPIO_PIN_RESET);
//设置PC10,PC11输出低电平
}}
功能:控制电机转速。(若GPIO_Pin==GPIO_PIN_0,电机转动;若GPIO_Pin==GPIO_PIN_2,占空比在原有基础上加10;若GPIO_Pin==GPIO_PIN_3,占空比在原有基础上减10;若GPIO_Pin==GPIO_PIN_4,电机停止转动)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) //(中断回调函数)
{
if(GPIO_Pin==GPIO_PIN_0)
//若GPIO_Pin测试等于GPIO_PIN_0(若GPIO_PIN_0按键按下)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,GPIO_PIN_RESET);
}else if(GPIO_Pin==GPIO_PIN_2)
{
if(cmpv<100)
cmpv=cmpv+10; //占空比在原有基础上加10
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,cmpv);
//设置定时器3通道4的PWM输出占空比
}
else if(GPIO_Pin==GPIO_PIN_3)
{
if(cmpv>0)
cmpv=cmpv-10;
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,cmpv);
}else if(GPIO_Pin==GPIO_PIN_4)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11|GPIO_PIN_10,GPIO_PIN_RESET);
//设置PC10,PC11输出低电平
}}