USART1数据异常

2019-07-21 02:59发布

       我在测试F407的串口时,发现十分奇怪的问题。我用一个变量从零开始自增,每自增1后发送到串口上,(之所以这么做,是因为读6050的ID时,返回68了,结果电脑显示的时C8)发现接收到的数据增加到0F后就直接跳到30,而单步运行时发现代码里传送给串口1的数据是10,为何收到的是30。而相同的主函数代码我用在103的板子上,就一切正常。说多了不清楚,我直接上代码,上图。(图1中带箭头的是数据跳变处,貌似有规律的跳变,但不知为何,在103的板子就能接收正常的数据,后面是单步运行时的图) [mw_shl_code=c,true]int main(void) { uint8_t count=0; LED_Init (); delay_init(168); uart_init(115200);      while(1) {  count++;  delay_ms(10);  USART1->DR=count;  while((USART1->SR&0X40)==0);  if(count%50==0)LED0=!LED0; }  }  [/mw_shl_code] [mw_shl_code=c,true]  [/mw_shl_code] [mw_shl_code=c,true]   [/mw_shl_code] [mw_shl_code=c,true]   [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
509member
1楼-- · 2019-07-21 06:41
回复【2楼】正点原子:
---------------------------------
原子哥,问题已解决啦,是时钟问题,我拷贝库文件时,忘记修改#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */这个啦,原来默认是25MHz的
正点原子
2楼-- · 2019-07-21 10:00
感觉是不是你波特率没设置对。
509member
3楼-- · 2019-07-21 11:07
回复【2楼】正点原子:
---------------------------------
波特率收发端设置一样的,而且我改了几个波特率还是有问题,用了其他波特率错误得更加没规律了。

一周热门 更多>