完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
hal库里面路径:STM32Cube_FW_L0_V1.10.0ProjectsSTM32L053C8-DiscoveryExamples UARTUART_TwoBoards_ComIT
工程是串口1中断收发模式配置 UART_HandleTypeDef UartHandle; //串口结构体变量 UartHandle.Instance = USARTx; //初始化串口实例 USART1 UartHandle.Init.BaudRate = 9600; //设置波特率 UartHandle.Init.WordLength = UART_WORDLENGTH_8B; //8位数据位 UartHandle.Init.StopBits = UART_STOPBITS_1; //一个停止位 UartHandle.Init.Parity = UART_PARITY_NONE; //奇偶校验位无 UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE; //硬件控制流无 UartHandle.Init.Mode = UART_MODE_TX_RX; //RX和TX模式 if(HAL_UART_Init(&UartHandle) != HAL_OK) //使能结构体变量 { Error_Handler(); } void HAL_UART_MspInit(UART_HandleTypeDef *huart) //自己写的函数,对串口引脚初始化 在 HAL_UART_Init函数里面自动调用 不用声明, { GPIO_InitTypeDef GPIO_InitStruct; USARTx_TX_GPIO_CLK_ENABLE(); //串口引脚时钟使能 USARTx_RX_GPIO_CLK_ENABLE(); USARTx_CLK_ENABLE(); //串口时钟使能 /* UART TX GPIO pin configuration */ GPIO_InitStruct.Pin = USARTx_TX_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH ; GPIO_InitStruct.Alternate = USARTx_TX_AF; //引脚功能复用 来作为串口1的TX HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct); /* UART RX GPIO pin configuration */ GPIO_InitStruct.Pin = USARTx_RX_PIN; GPIO_InitStruct.Alternate = USARTx_RX_AF; HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct); /* NVIC for USART1 */ HAL_NVIC_SetPriority(USARTx_IRQn, 0, 1); //设置中断优先级 HAL_NVIC_EnableIRQ(USARTx_IRQn); //使能中断 } void HAL_UART_MspDeInit(UART_HandleTypeDef *huart) //自己写函数 失能串口功能 { 失能外围时钟 将GPIO和NVIC配置恢复到默认状态 } //it.c中的中断函数 void USART1_IRQHandler(void) { HAL_UART_IRQHandler(&UartHandle); } //串口配置完成 ******************************************************************************** 使能一下串口接收函数 uint8_t aRxBuffer, // HAL_UART_Receive_IT(&UartHandle, (uint8_t *)aRxBuffer,1); //串口配置完成后使能一下串口接收函数 发送函数 怎么使用可以自己封装 uint8_t aTxBuffer[] = " ****UART_TwoBoards_ComIT**** "; HAL_UART_Transmit_IT(&UartHandle, (uint8_t*)aTxBuffer,strlen(aTxBuffer));//把aTxBuffer数据发送出去 //中断回调函数 程序自动调用 收到的数据会存储到Data_BUF数组中,每次使用完记得把 FramLength清零 变量全局 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) { if(FramLength<(BUF_MAX_LEN-1)) //判断接受长度 Data_BUF[FramLength++]=rxdata; HAL_UART_Receive_IT(&usart1_handler,&rxdata,1); //每次接收完之后重新使能串口接收接受一个字节 } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
568浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:05 , Processed in 0.695091 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号