背景简介: 开发板stm32f107。
系统程序中多中断任务,在某一个中断任务中把64位变量数据输出。
串口:波特率921600,8位数据位,1位停止位,无校验,无流控制。
输出语句:
printf("PreTIM64Real=%llu,PreTIM64INT=%llu, PreTIM64Cal=%15llu\r\n ", PreTIM64Real, PreTIM64INT,PreTIM64Cal); printf("TIM64Real=%llu,TIM64Cal=%llu\r\n\r\n ", TIM64Real, TIM64Cal);
输出结果:
如下,偶尔会有错误数据输出:
在本应该输出174006995的地方,输出了一个很大的数:747354352800235520。
计算器查看十六进制数,发现多了16个字节的0,去掉即正常:
正确的数为:174,006,995, 0A 5F 22 D3。 错误的数为:747354352800235520, 0A 5F 22 D3 00 00 00 00。
请问大家,这个现象怎么解释呢?
|