异步通信:数据通常以字符或字节为单位组成字符帧传送。假设是字符A,,一个字节是8位,这里使用ASCII编码将字符转换为字节,是01000001,从而发送出去,发送端逐帧发送,通过传输线被接收端逐帧接收。发送端和接受端由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立。

同步通信:同步通信一次可发送一段数据。数据均由同步字符、数据字符和检验字符组成。其中同步字符位于帧开头,用于确认数据开始。数据字符在同步字符后,没有个数限制,由数据块长度决定最后是检验字符,用于检验接收数据是否正确。同步通信相较于异步通信需要保证发送时钟和接收时钟保持严格同步。

以下为usart的函数

#include “gd32e23x.h”                   // Device header
#include “stdio.h”
void Init_USARTGPIO(void)
{
rcu_periph_clock_enable(RCU_GPIOA);//使能外设时钟GPIOA
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_9);//使用复用功能1——USART0,即使用串口0的外设功能
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_10);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9);//配置复用模式,设置为上拉,因为表示线路处于空闲状态下的空闲位被定义为高电平,所以默认状态下应该为高电平
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_9);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_10);
}
void USART_init(void)
{
rcu_periph_clock_enable(RCU_USART0);//使能串口0的时钟
//串口参数配置
usart_deinit(USART0);//复位串口0,保证配置都是默认的状态
usart_word_length_set(USART0, USART_WL_8BIT);//配置数据位长度为8位
usart_stop_bit_set(USART0, USART_STB_1BIT);//设置停止位为1位
usart_parity_config(USART0, USART_PM_NONE);//设置奇偶校验—无奇偶校验
usart_baudrate_set(USART0, 115200U);//波特率设置为115200
usart_receive_config(USART0, USART_RECEIVE_ENABLE);//接收使能
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);//发送使能
//使能串口0
usart_enable(USART0);
}
//printf函数重定义,可以直接使用printf函数来打印了
int fputc(int ch, FILE *f)
{
usart_data_transmit(USART0, (uint8_t) ch);
while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));
return ch;
}

之前定的元器件今天都到了,焊了一下,但是借的焊枪不是很好用,而且还掰断了一个电容,就当做练习吧。已经买了新的焊枪了,T12好像是,应该会比较好用吧,毕竟要一伯多。