查看: 4824|回复: 1

[提问] stm32串口发送数据很多,求帮助!

[复制链接]
发表于 2013-4-19 18:38:21 | 显示全部楼层 |阅读模式
关键词: stm32 , 计数器 , 串口
if(TIM6->SR & 0X0001)
        {
                if(num_10ms==2)                                                          //读取各电机码盘测速值
                {         
                        speed_1=TIM2->CNT;
                        speed_2=TIM3->CNT;
                        speed_3=TIM4->CNT;
                        speed_4=TIM5->CNT;

                        TIM2->CNT = 0;
                        TIM3->CNT = 0;
                        TIM4->CNT = 0;
                        TIM5->CNT = 0;

                        USART1_SendChar(BYTE1(speed_1));               
                        USART1_SendChar(BYTE0(speed_1));

   程序是在定时器中断函数中读取计数器的值,然后把这个值通过串口发送给电脑。发送的值在150左右。
       while(1)
        {
        
                {        
                        //Wave_handle();
                        delay_ms(60);

                        USART1_SendChar(BYTE1(speed_1));               
                        USART1_SendChar(BYTE0(speed_1));
                }
//                LCD_Write_ASCII_String(0,0,"wor");
//                Motor_Start(PWM_MAX1,PWM_MAX2,PWM_MAX3,PWM_MAX4);
        
           }
而把它改到main函数主循环中,通过串口将数据发送给电脑,发送的值就全变成0了,这到底是怎么回事啊?求指导。
发表于 2013-5-29 05:36:51 | 显示全部楼层
你的代码中变量没有注释,不能完全看懂你的代码,只能猜你的的代码问题。根据你的描述,你将这段代码从定时中断服务程序改放到main函数主循环中,就出现这种情况,那可能是因为定时中断服务程序修改了你这段代码中的某个条件,如TIM6->SR ,或num_10ms。你改到main函数主循环后,因为这些条件不满足,speed_1没被修改,所以发出的数值就是默认值。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表