我在测试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]
---------------------------------
波特率收发端设置一样的,而且我改了几个波特率还是有问题,用了其他波特率错误得更加没规律了。
一周热门 更多>