串口输入控制PWM

2019-08-23 15:46发布

本帖最后由 wdodo0929 于 2017-3-28 15:40 编辑

用了原子哥的USMART组件,感觉调速有些延迟 (不到0.5秒)。想到不用组件直接通过串口调速,来试试。主程序大概是这样的:int main(void)
{
        u8 res;
        u8 ch=0x00;
        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        My_USART1_Init();
        TIM1_PWM_Init(7199,159);
         while(1)
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
     res= USART_ReceiveData(USART1);
     USART_SendData(USART1,res);
}
   
            
LED0_PWM_VAL=((u16)ch<<8)|(res);  //LED0_PWM_VAL赋值给CCR1了


}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
wdodo0929
1楼-- · 2019-08-23 21:03
C语言基础不太好,程序运行不了,求教了
正点原子
2楼-- · 2019-08-23 21:31
 精彩回答 2  元偷偷看……
wdodo0929
3楼-- · 2019-08-24 00:44
大家给个思路吧
wdodo0929
4楼-- · 2019-08-24 03:16
正点原子 发表于 2017-3-28 15:40
没有死循环,导致的。mian函数不能运行完。。。

void USART1_IRQHandler(void)
{
        u16 res;
        TIM1_PWM_Init(7199,159);
         if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
   res=USART_ReceiveData(USART1);
   TIM1->CCR1 = res;
         
         USART_SendData(USART1,res);
  }
}

int main(void)
{       

        USART1_IRQHandler();
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        My_USART1_Init();
        while(1)
        {
       
        }

}
我觉得这次的逻辑没错呀,可还是不能循环起来,串口数据输入后,LED又灭了,然后无论怎么串口输都没用。

一周热门 更多>