尝试向洋桃一号上移植UCOS-II系统,参考原子哥的教程,其中验证移植成功性方面原子哥给出了几个实验:
在验证float_task时,发现从串口发送回的浮点数出现错误
void float_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
static float num=0;
while(1){
num+=0.01f;
OS_ENTER_CRITICAL();
printf("Count:%.2f \r\n",num);
OS_EXIT_CRITICAL();
delay_ms(500);
}
}
之后我验证发现核心板本身运算float加法时并没有出现错误,是串口无法正确发送float类型。验证方法如下:
void float_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
static float num=0;
int intnum=0;
while(1){
num+=0.01f;
intnum=100*num;
OS_ENTER_CRITICAL();
printf("Count:%d \r\n",intnum);
OS_EXIT_CRITICAL();
delay_ms(500);
}
}
由此可知是串口发送出现了问题。写入其他串口发送程序发送浮点数,可以正确收到数据。
本人使用的是洋桃编写的usart.c函数文件,不清楚应该如何修改以解决这个问题。