1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
一、STM32CubeMX配置(本文使用的STM32CubeMX版本为5.6.0)
思路:使用中断控制方式,当串口接收到数据时,再将接收到的数据发送出去 1.MCU选型 本例程使用的为STM32L051C8T6型号 2.使能时钟 3.时钟配置 4.设置GPIO口(本例使用的为串口1,板载自带USB转串口芯片) 5.串口配置 ①模式配置 ②串口参数配置 ③开启串口中断 因为程序使用的是中断处理,所以还需要打开NVIC Settings页面,使能中断 ④串口引脚配置 6.配置STM32CubeMX生成工程文件 7.点击GENERATE CODE生成工程文件 二、KEIL程序 1.串口相关函数说明:
2.程序编写 1.在main.c文件中定义2个数组,用于发送及存放数据内容; /* USER CODE BEGIN Includes */ uint8_t aTxBuffer[]="rn*********串口发送数据*********rn"; uint8_t aRxBuffer[1]; // 用来接收串口1发送的数据 /* USER CODE END Includes */ 2.由于要使用printf,所以需要重定义,USART.C文件中; #include "stdio.h" //这个一定不能忘 #if 1 #pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半主机模式 void _sys_exit(int x) { x = x; } //重定义fputc函数 int fputc(int ch, FILE *f) { while((USART1->ISR&0X40)==0);//循环发送,直到发送完毕 USART1->TDR = (uint8_t) ch; return ch; } #endif 3.重新编写串口接收回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef * huart) { if(huart->Instance == USART1) // 判断是由哪个串口触发的中断 { HAL_UART_Transmit(&huart1,aRxBuffer,1,100); // 接收到数据马上使用串口1发送出去 HAL_UART_Receive_IT(&huart1,aRxBuffer,1); // 重新使能串口1接收中断 } } 4.main.c函数添加如下; int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ HAL_UART_Transmit_IT(&huart1 ,aTxBuffer,sizeof(aTxBuffer)); //sizeof()可读取目标数组长度 HAL_UART_Receive_IT(&huart1,aRxBuffer,1); printf("rnSTM32L051C8T6 开发板串口实验rn"); printf("rn请输入数据rn"); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); //LED1 HAL_Delay(500); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } 2.编译文件,下载。即可实现串口收发状态(开发板串口拨码开关不要忘了打开(* ̄︶ ̄)) 源工程文件代码下载:https://download.csdn.net/download/cheng_nnan/12330928 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1763 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1617 浏览 1 评论
1059 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
723 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1933浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
726浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
592浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
550浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 15:04 , Processed in 0.740452 second(s), Total 76, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号