2611|0

821

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【 ST NUCLEO-G071RB测评】USART [复制链接]

      本次实验使用的NUCLEO-G071RB开发板由https://www.stmcu.com.cn/index.p ... /261/layout/product提供,更多相关资讯请进入查询。本次实验是利用NUCLEO-G071RB开发板的USART2模块与PC进行通信,在PC端通过串口助手向NUCLEO-G071RB发送控制字符来控制LD4的“亮”、“灭”状态,以及向PC端返回指定信息。
一、实验资源
1、NUCLEO-G071RB开发板;
2、Keil v5.25.2.0;
3、STM32CubeMX v5.0.1;
4、SSCOM v5.13.1;

二、实验过程 1、资源分配
     NUCLEO-G071RB板载STM32G071RBT6微控制器,其内部的串口资源还是非常丰富的,从下图可以看到该器件包含USART[1-4]以及低功耗串口LPUART1在内多达5个串口。另外其内部嵌入了精确的时钟,不仅仅能在生产上降低成本并能在产品设计上减少很多麻烦。


从原理图中可以看到NUCLEO-G071RB的“VCP”利用了微控制器的USART2,即PA2与PA3引脚。打开STM32CubeMX可以看到默认状态下“VCP”使用的是“LPUART1”,因为PA2与PA3引脚能干的活儿太多,不只是能配置成“USART2”也能被配置成“LPUART1”。使用STM32CubeMX真是很方便,鼠标点几下就配置成“USART2”了,这里就利用USART2配合内部高精度时钟来进行实验。



从下面几张图中可以看到USART2及时钟的配置:115200、8、n、1;USART2时钟为来自PCLK的64MHz;



2、程序实现
     将经过STM32CubeMX生成的工程文件通过Keil打开进行二次加工、编译,首先在usart.c中添加了“重定向”函数,方便串口干活儿:
  1. /* USER CODE BEGIN 1 */
  2. /*重定向getchar到LPUART1*/
  3. int fgetc(FILE * f)
  4. {
  5.   uint8_t ch = 0;
  6.   HAL_UART_Receive(&huart2, &ch, 1, 0xFFFF);
  7.   return ch;
  8. }

  9. /*重定向printf到LPUART1*/
  10. int fputc(int ch, FILE *f)
  11. {
  12.         HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0XFFFF);
  13.         return ch;
  14. }
  15. /* USER CODE END 1 */
复制代码



下面是这函数中的内容:
  1. int main(void)
  2. {
  3.   /* USER CODE BEGIN 1 */
  4.         uint8_t rx;
  5.   /* USER CODE END 1 */

  6.   /* MCU Configuration--------------------------------------------------------*/

  7.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  8.   HAL_Init();

  9.   /* USER CODE BEGIN Init */

  10.   /* USER CODE END Init */

  11.   /* Configure the system clock */
  12.   SystemClock_Config();

  13.   /* USER CODE BEGIN SysInit */

  14.   /* USER CODE END SysInit */

  15.   /* Initialize all configured peripherals */
  16.   MX_GPIO_Init();
  17.   MX_USART2_UART_Init();
  18.   /* USER CODE BEGIN 2 */
  19.         Print_Infor();
  20.   /* USER CODE END 2 */

  21.   /* Infinite loop */
  22.   /* USER CODE BEGIN WHILE */
  23.   while (1)
  24.   {
  25.                 rx = getchar();
  26.                 printf("\r\n>>>收到字符:%c\n",rx);
  27.                 switch(rx)
  28.                 {
  29.                         case'1':HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin);
  30.                                                         if(HAL_GPIO_ReadPin(LD4_GPIO_Port, LD4_Pin))                                                                       
  31.                                                                 printf("LD4已点亮\r\n");                                                               
  32.                                                         break;
  33.                                                        
  34.                         case'2':HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin);
  35.                                                         if(!HAL_GPIO_ReadPin(LD4_GPIO_Port, LD4_Pin))                                                                       
  36.                                                                 printf("LD4已熄灭\r\n");
  37.                                                         break;
  38.                                                        
  39.                         case'3':printf("新一代入门级32位STM32G0系列\r\n");
  40.                                                         printf("    bbs.eeworld.com.cn \r\n");                                                       
  41.                                                         printf("\r     NUCLEO-G071RB    \r\n");
  42.                                                         break;
  43.                                                        
  44.                         default:printf("请重新输入控制字符...\r\n"); break;
  45.                 }
  46.     /* USER CODE END WHILE */

  47.     /* USER CODE BEGIN 3 */
  48.   }
  49.   /* USER CODE END 3 */
  50. }
复制代码


三、实验结果


四、实验总结
      实验实现了串口数据的收发,对USART模块加深了学习,有收获。后面要尝试对LPUART模块进行学习,利用LPUART实现本次实验过程。
附:本次实验工程 USART2.rar (4.88 MB, 下载次数: 17)

此内容由EEWORLD论坛网友lising原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自stm32/stm8论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表