这里说的MCU是没有带SDK的那种,完完全全就是裸的,所有驱动得自己开发。串口驱动得自己从0开始写。下面总结几条写MCU串口程序需要注意的。
1、 全双工与半双工首先要考虑的最基本的问题就是,这款芯片串口是全双工还是半双工的?
如果是半双工,收和发不能同时进行,收的时候不能发,发的时候不能收,因为发送器和接收器是同一个,只能单向用,一般收数据是中断触发在中断里1byte 1byte地收。
那么怎么判断当前能不能发数据呢?当收到数据过一定时间(可以用timer实现)还没有再收到数据认为串口空闲没有数据要收了,此时可以发数据。
半双工相当于是用户自己去实现产生了串口空闲中断。
如果是全双工,想发就发想收就收,是不是省事多了?
发数据是由用户先把某个发送中断寄存器置1,接着会自动产生写中断,用户在中断服务函数里把要发的数据装到数据寄存器并把中断寄存器清零,等刚刚装载的那1byte数据发送成功,硬件又会自动产生发送中断,用户再次把数据装载进去并把中断寄存器清零。
如此循环,当某次产生中断,用户不再装载数据,只是把中断寄存器清零那么不再有发送中断产生,发送数据过程就结束了。
全双工