数据打印输出(寄存器方式)
最近在运用操作系统过程中,遇到一个问题,就是当2个任务函数同时调用一个hal库函数时,会发生异常情况,导致数据输出存在bug。经过一番检查之后,发现可能是库函数调用过程中,相关寄存器标志位未来及更改,就进入另一个任务函数中执行另一个hal库发送函数,使得判断异常。
为解决这个办法,可自行通过编译寄存器发送函数,直接对寄存器进行操作,实现过程透明化,便于理解,也可以防止程序出现异常。
UARTx->DR=USART_RX_BUF[t]; //发送一个字节到串口,直接通过寄存器实现
while((UARTx->SR &0X40)==0); //在写完一个UARTx->DR之后,要检测这个数据是否已经发送完成,通过检测UARTx->SR的第6位是否为1来判断是否开始第二个字节的发送
直接利用此函数即可实现数据打印上传。