简约手机网站源码,南阳seo优化公司,大型的平台类网站建设需要多少资金,低代码开发软件串口测试实验
基本原理
在串口实验中#xff0c;是通过mini_USB线搭建终端与电脑端#xff08;也可称终端#xff0c;为做区分称电脑端#xff09;的“桥梁”#xff0c;电脑端的串口调试助手通过mini_USB线向终端发送信息#xff0c;由CH340芯片将USB接口进行转换是通过mini_USB线搭建终端与电脑端也可称终端为做区分称电脑端的“桥梁”电脑端的串口调试助手通过mini_USB线向终端发送信息由CH340芯片将USB接口进行转换转换为串口通过串口将信息传给单片机串口接收到信息后产生中断响应单片机进行处理单片机处理后返回一个信息给串口调试助手。 在串口通信中中断处理程序通常包括串口接收中断和串口发送中断两部分。串口接收中断用于处理接收到的数据当串口接收到数据时就会产生接收中断并进入接收中断处理程序。在该程序中可以从串口中读取接收到的数据并进行相应的处理。串口发送中断用于处理发送数据当发送缓冲区为空时就会产生发送中断并进入发送中断处理程序。在该程序中可以从应用程序中读取要发送的数据并将其写入串口发送缓冲区中。 在进行数据的收发过程中UART模块显得尤为重要。 STM32的UART模块是用于串口通信的硬件模块它支持全双工通信可以同时进行发送和接收数据。它使用通用同步/异步接收/发送器USART来实现串行通信可以与外部设备进行串行数据传输。 以下是USART中的几个函数分别对应不同的功能 1USART_DeInit()串口复位函数 2USART_Init()串口参数初始化函数 3USART_Cmd()串口使能函数
实验原理图 程序代码
1、UART初始化
void uart_init(u32 bound)
{//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1GPIOA时钟//USART1_TX GPIOA.9GPIO_InitStructure.GPIO_Pin GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; //复用推挽输出GPIO_Init(GPIOA, GPIO_InitStructure);//初始化GPIOA.9//USART1_RX GPIOA.10初始化GPIO_InitStructure.GPIO_Pin GPIO_Pin_10;//PA10GPIO_InitStructure.GPIO_Mode GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA, GPIO_InitStructure);//初始化GPIOA.10 //Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority3 ;//抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority 3; //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; //IRQ通道使能NVIC_Init(NVIC_InitStructure); //根据指定的参数初始化VIC寄存器//USART 初始化设置USART_InitStructure.USART_BaudRate bound;//串口波特率USART_InitStructure.USART_WordLength USART_WordLength_8b;//字长为8位数据格式USART_InitStructure.USART_StopBits USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None;//无硬件数据流控制USART_InitStructure.USART_Mode USART_Mode_Rx | USART_Mode_Tx; //收发模式USART_Init(USART1, USART_InitStructure); //初始化串口1USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断USART_Cmd(USART1, ENABLE); //使能串口1
}2、对串口中断服务进行设置 3、主函数中调用执行
int main(void){ u16 t; u16 len; u16 times0;delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级2位响应优先级uart_init(115200); //串口初始化为115200while(1){if(USART_RX_STA0x8000){ lenUSART_RX_STA0x3fff;//得到此次接收到的数据长度printf(\r\n您发送的消息为:\r\n\r\n);for(t0;tlen;t){USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!SET);//等待发送结束}printf(\r\n\r\n);//插入换行USART_RX_STA0;}else{times;if(times%50000){printf(\r\nSTM32实训平台 串口实验\r\n);printf(adfadfassdfasdfa\r\n\r\n);}if(times%2000)printf(请输入数据,以回车键结束\n); delay_ms(10); }} }实验现象
打开串口调试助手注意设置波特率为115200可以观察到串口反复收到字符串“请输入数据,以回车键结束”用串口助手向单片机发送任意字符串后单片机会回显该字符串。