上海做网站收费,浏览器网页版,营销型企业网站的策划方案,wordpress 不要可视化提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 USART串口理论知识总结 1、通讯的串行和并行1.串口采用发送数据代码并用printf重代码 1、通讯的串行和并行 1.串口采用发送数据代码并用printf重代码
#include stdint.h… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 USART串口理论知识总结 1、通讯的串行和并行1.串口采用发送数据代码并用printf重代码 1、通讯的串行和并行 1.串口采用发送数据代码并用printf重代码
#include stdint.h
#include stdio.h
#include gd32f30x.hstatic void Usb2ComGpioInit(void)
{rcu_periph_clock_enable(RCU_GPIOA);//配置TX引脚对于的管脚为复用推挽输出模式输出模式有复用和一般模式的区别而输出无这样的的区别。gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_9);//发送引脚//配置TX引脚对于的管脚为上拉输入或者浮空输入//why 串口默认输出高电平读取数据是空闲状态和数据起始位都为低电平。gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_10MHZ, GPIO_PIN_10);//接受引脚
}static void Usb2ComUartInit(uint32_t baudRate)
{/* 使能UART时钟*/rcu_periph_clock_enable(RCU_USART0);/* 复位UART*/usart_deinit (USART0);/* 通过USART_CTL0寄存器的WL设置字长*/ /* 初始默认WL字长为8bit*/ usart_word_length_set(USART0, USART_WL_8BIT);/* 通过USART_CTL0寄存器的PCEN设置校验位*//* 初始默认无校验位*/usart_parity_config(USART0, USART_PM_NONE);/* 在USART_CTL1寄存器中写STB[1:0]位来设置停止位的长度*/ /*初始默认停止位1bit 可选0.5 1 1.5 2*/ usart_stop_bit_set(USART0, USART_STB_1BIT);/* 在USART_BAUD寄存器中设置波特率*/ usart_baudrate_set(USART0, baudRate);/* 在USART_CTL0寄存器中设置TEN位使能发送功能*/usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);/* 在USART_CTL0寄存器中置位UEN位使能UART*/ usart_enable(USART0);
}void Usb2ComTest(void)
{for (uint8_t i 0; i 250; i){usart_data_transmit(USART0, i);//发送数据while (RESET usart_flag_get(USART0, USART_FLAG_TBE)); //当TBE为0等待当TBE为0时表示TXR数据寄存器有数据需要继续等待//当TBE为1跳出循环表示TXR数据寄存器无数据可以继续向位移寄存器下一个数据。总结RENE和TBE标志位为1是都表示已经准备好的意思可以开始接受和发送下一个数据。TC为1时表示数据发送完毕。}
// while (RESET usart_flag_get(g_uartHwInfo.uartNo, USART_FLAG_TC));
// usart_transmit_config(g_uartHwInfo.uartNo, USART_TRANSMIT_DISABLE);//TC为1时跳出循环表示位移寄存器数据无数据即发送完毕。//TC为0时等待表示位移寄存器数据有数据需要继续等待。
}/**
***********************************************************
* brief USB转串口硬件初始化
* param
* return
***********************************************************
*/
void Usb2ComDrvInit(void)
{Usb2ComGpioInit();Usb2ComUartInit(115200);
}/**
***********************************************************
* brief printf函数默认打印输出到显示器如果要输出到串口必须重新实现fputc函数将输出指向串口称为重定向
* param
* return
***********************************************************
*/
int fputc(int ch, FILE *f)
{usart_data_transmit(USART0, (uint8_t)ch);while (RESET usart_flag_get(USART0, USART_FLAG_TBE));return ch;
}