做网站好还是做程序员好,二级a做爰片免费视网站,最好用的免费建站平台,互联网科技公司简介今日学习使用STM32 C8T6的串口#xff0c;我们在经过学习笔记2的总结归纳可知#xff0c;STM32 C8T6最小系统板上有三路串口#xff0c;如下图#xff1a; 今日我们就着手学习如何配置开通这些串口进行收发#xff0c;这里不讲串口通信概念与基础#xff0c;可以自行网上…今日学习使用STM32 C8T6的串口我们在经过学习笔记2的总结归纳可知STM32 C8T6最小系统板上有三路串口如下图 今日我们就着手学习如何配置开通这些串口进行收发这里不讲串口通信概念与基础可以自行网上查找本文直接开始介绍库函数与编程实现 串口配置相关库函数介绍 打开串口GPIO的时钟
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
/*
#define RCC_APB2Periph_GPIOA ((uint32_t)0x00000004)
#define RCC_APB2Periph_GPIOB ((uint32_t)0x00000008)
#define RCC_APB2Periph_GPIOC ((uint32_t)0x00000010)
#define RCC_APB2Periph_GPIOD ((uint32_t)0x00000020)
#define RCC_APB2Periph_GPIOE ((uint32_t)0x00000040)
#define RCC_APB2Periph_GPIOF ((uint32_t)0x00000080)
#define RCC_APB2Periph_GPIOG ((uint32_t)0x00000100)
*/ 打开串口外设的时钟
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
/*
#define RCC_APB2Periph_USART1 ((uint32_t)0x00004000)
#define RCC_APB1Periph_USART2 ((uint32_t)0x00020000)
#define RCC_APB1Periph_USART3 ((uint32_t)0x00040000)
#define RCC_APB1Periph_UART4 ((uint32_t)0x00080000)
#define RCC_APB1Periph_UART5 ((uint32_t)0x00100000)
*/ 串口的初始化配置
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)
/*
USART1 USART2 USART3*/ 向量中断控制器组选择:
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup) 初始化配置NVIC:
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) 串口接收
USART_ReceiveData(USART1) 串口配置编程
首先创建好要用的几个文件.c 与.h在添加进工程别忘了添加路径~ 串口的初始化 以下是串口1的初始化以及配置中断优先级中断优先级的配置分为主优先和子优先有关中断优先级的配置这放在以后再说~~~ 测试工程文件我还编写了串口2,3的初始化可以下载测试观察~ #include USART_init.hvoid Usart1_Init(unsigned int baud)
{GPIO_InitTypeDef gpio_initstruct;USART_InitTypeDef usart_initstruct;NVIC_InitTypeDef nvic_initstruct;// 打开串口GPIO的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 打开串口外设的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//PA9 TXD // 将USART Tx的GPIO配置为推挽复用模式gpio_initstruct.GPIO_Mode GPIO_Mode_AF_PP;gpio_initstruct.GPIO_Pin GPIO_Pin_9;gpio_initstruct.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, gpio_initstruct);//PA10 RXD // 将USART Rx的GPIO配置为浮空输入模式gpio_initstruct.GPIO_Mode GPIO_Mode_IN_FLOATING;gpio_initstruct.GPIO_Pin GPIO_Pin_10;gpio_initstruct.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, gpio_initstruct);usart_initstruct.USART_BaudRate baud; //配置波特率usart_initstruct.USART_HardwareFlowControl USART_HardwareFlowControl_None; //无硬件流控 usart_initstruct.USART_Mode USART_Mode_Rx | USART_Mode_Tx; //接收和发送 usart_initstruct.USART_Parity USART_Parity_No; //无校验usart_initstruct.USART_StopBits USART_StopBits_1; //配置停止位 1位停止位usart_initstruct.USART_WordLength USART_WordLength_8b; //配置 针数据字长 8位数据位// 完成串口的初始化配置USART_Init(USART1, usart_initstruct);USART_Cmd(USART1, ENABLE); //使能串口USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //使能接收中断NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* 嵌套向量中断控制器组选择 */nvic_initstruct.NVIC_IRQChannel USART1_IRQn; /* 配置USART为中断源 */nvic_initstruct.NVIC_IRQChannelCmd ENABLE; /* 使能中断 */nvic_initstruct.NVIC_IRQChannelPreemptionPriority 0; /* 抢断优先级*/nvic_initstruct.NVIC_IRQChannelSubPriority 2; /* 子优先级 */NVIC_Init(nvic_initstruct); /* 初始化配置NVIC */}串口中断服务函数的编写
首先在启动文件找到三个串口的中断服务函数 void USART1_IRQHandler(void)
{if(USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) //接收中断{USART_ClearFlag(USART1, USART_FLAG_RXNE);}//返回收到的任意数据USART_SendData(USART1,USART_ReceiveData(USART1)); } 测试结果截图 工程下载 https://download.csdn.net/download/qq_64257614/88201777?spm1001.2014.3001.5503