目录
1.发送函数的参数data是8位的,当需要发送16位的数据时,要怎么处理?
2.当需要发送较多的数据,比如数组(数组是整数型)时,怎么处理?
4.想要使用Printf,scanf,getchar,putchar函数,需要重新定义它们各自的C库函数,将原本函数体改成USART的发送或者接收函数
5.将原本使用USART1的程序,改为使用串口2345上,怎么实现?
1.发送函数的参数data是8位的,当需要发送16位的数据时,要怎么处理?
将16位的数据分成两个8位存放,分别使用两次发送函数,即可解决。
2.当需要发送较多的数据,比如数组(数组是整数型)时,怎么处理?
使用循环语句,但是需要知道有多少个数组成员,循环多少次。在编写发送函数时,需要有三个参数,其中一个参数是数组的长度。
注意,判断多个字节的发送位是TC(Transport complete发送完成),判断一个字节的发送位是TXE(发送数据寄存器为空)
3.发送数组,数组是字符串,怎么处理?
字符串在数组中结束时,是\0,因此不需要知道字符串长度,使用do while()循环语句来发送。
4.想要使用Printf,scanf,getchar,putchar函数,需要重新定义它们各自的C库函数,将原本函数体改成USART的发送或者接收函数
5.将原本使用USART1的程序,改为使用串口2345上,怎么实现?
宏定义每组USART相关的参数,使用条件语句,需要的USART写1,其余写0;相关的参数包括GPIO和USART的时钟,GPIO的port和pin,中断源,中断函数名,USARTx等。
在硬件上,需要拔掉串口1连接USB转串口的跳帽,使用杜邦线连接USB转串口和其他的串口,注意,TX连RX,RX连TX。
6.使用USART,电脑上位机发送命令使得灯亮或者灭
打开GPIO和USART时钟;配置GPIO和USART数据格式等;不采用中断方式,采用查询方式,使用getchar,则需要重定义C库函数,改写成USART接收函数;将接收到的数据进行判断,然后执行对应的动作灯亮或者灭。