函数前面有串口的初始化void Angle(float angleSet){
float angleTime=0;
angleTime=0.5+angleSet/90; //ms
angleTime=2000-angleTime*100;
TIM_SetCompare2(TIM3,angleTime);
}
void USART1_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
res= USART_ReceiveData(USART1);
Angle(res);
USART_SendData(USART1,res);
}
}
int main(void)
{
// u8 Resive=0;
// u16 adcx=0;
My_USART1_Init();
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
// uart_init(115200); //串口初始化为115200波特率
LED_Init(); //LED端口初始化
// Adc_Init(); //ADC初始化
TIM3_PWM_Init(1999,719); //不分频。T=(1999+1)*(719+1)/72=20000us=20ms
while(1)
{
//// Resive=USART_ReceiveData(USART1);
// Angle(Res);
// adcx=Get_Adc_Average(ADC_Channel_1,10);
}
}
Angle函数是对PWM波占空比对舵机的转换。
这个程序是电脑对串口发送数据来改变占空比来使舵机角度的变换。
但是这个程序可以读取多次数据但是只能进行一次的PWM波转换,即只能舵机只能改变一次角度。
但是我想要程序实现的是电脑一发送数据舵机就立刻转变角度,可以多次实现
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>