OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6244|回复: 7

stm32串口发送数据问题很多,求帮助!

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-4-19
在线时间
0 小时
发表于 2013-4-19 18:45:31 | 显示全部楼层 |阅读模式
 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了,这到底是怎么回事啊?求指导。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
发表于 2013-4-19 20:04:39 | 显示全部楼层
发送的是8位 收到的是16位吧
~~~~ 欢迎讨论,拒绝谩骂 ~~~~
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-4-19
在线时间
0 小时
 楼主| 发表于 2013-4-19 20:19:13 | 显示全部楼层
回复【2楼】兰斯洛:
---------------------------------
这个,我不清楚。。。但同样的语句,在定时器中断中是可以正常执行的,电脑上也收到了数据。在主循环中发送,电脑上收到的数据就全变成0了
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-4-19
在线时间
0 小时
 楼主| 发表于 2013-4-19 20:23:53 | 显示全部楼层
回复【2楼】兰斯洛:
---------------------------------
发送的数据是8位的。。。收到的应该也是8位的。。我在发送的时候,在主循环中这样写:
                        USART1_SendChar(0xff);                
                        USART1_SendChar(BYTE0(speed_1));
                        USART1_SendChar(BYTE1(speed_1));                
                        USART1_SendChar(0xff);                               电脑上收到的数据是: ff 00 00 ff
回复 支持 反对

使用道具 举报

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
发表于 2013-4-19 21:16:13 | 显示全部楼层
是不是BYTE0 BYTE1这2个函数的问题呢
~~~~ 欢迎讨论,拒绝谩骂 ~~~~
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12133
金钱
12133
注册时间
2013-3-8
在线时间
1289 小时
发表于 2013-4-19 21:32:32 | 显示全部楼层
回复【4楼】萧条桑拓:
---------------------------------
speed_1可能被清零。仿真看一下吧!
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-4-19
在线时间
0 小时
 楼主| 发表于 2013-4-20 14:00:20 | 显示全部楼层
回复【5楼】兰斯洛:
---------------------------------
这两个函数没问题的,因为在定时器中断中发送就没有问题
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-4-19
在线时间
0 小时
 楼主| 发表于 2013-4-20 14:13:22 | 显示全部楼层
回复【6楼】augustedward:
---------------------------------
我试试吧。。。不过它被清零可能性不大。。就一个中断服务函数,别的没啥了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 02:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表