868|1

162

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【STM32F746 Nucleo】 MxCube开发串口通讯 [复制链接]

  • CubeMX配置开发驱动
    1. 芯片查找

因为该开发板是官方设计推出的,顾在工具软中有开发板的资源,可以直接选择当前使用的开发板。

 

    1. 时钟配置

可以根据自己的实际情况进行选择始终频率。最大始终频率是216MHz

 

    1. 时钟源配置

此环境下已经进行了配置,检查一下即可。

 

    1. SYS设置Debug

选择的是 SW模式

 

    1. 串口配置

涉及波特率设置,引脚设置和中断设置

     

1.6代码生成

在此埋个伏笔,下一篇内容简单描述一下。

二、keil工程

2.1.CubeMX生成的(MDK)keil工程

 

2.2、原理图引脚

 

2.3、串口实现

CubeMX软件,通过图像化的方式,生成HAL库程序代码,HAL库程序代码较标准库具有很大的区别。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

比如此行代码,是串口放回数据的函数,底层到都是采用中断的方式处理,但边准库采用的是直接中断调用的方式,HAL库采用的是回调函数的方式。HAL的设计理念其实更好用。

1.添加接收和发送函数代码

  • /* USER CODE BEGIN 1 */
  • /**
  •   * [url=home.php?mod=space&uid=159083]@brief[/url]  Usart1Send
  •   * @param  pUSARTx: Specified serial port
  •   * @param  str:Send data content
  •   * @param  strlen:Send data len
  •   * @retval  None
  •   */
  • void Usart2_Send( char *str,uint8_t strlen)
  • {
  •   unsigned int k=0;
  •   do 
  •   {
  •       HAL_UART_Transmit(&huart2,(uint8_t *)(str + k),1,1000);
  •       k++;
  •   } while(k < strlen);
  • }
  • /**
  •   * @brief  Usart1Send
  •   * @param  pUSARTx: Specified serial port
  •   * @param  str:Send data content
  •   * @param  strlen:Send data len
  •   * @retval  None
  •   */
  • void Usart3_Send( char *str,uint8_t strlen)
  • {
  •   unsigned int k=0;
  •   do 
  •   {
  •       HAL_UART_Transmit(&huart3,(uint8_t *)(str + k),1,1000);
  •       k++;
  •   } while(k < strlen);
  • }
  • /**
  •   * @brief  HAL_UART_RxCpltCallback
  •   * @param  huart: Specified serial port
  •   * @retval  None
  •   */
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  •   if(huart->Instance == USART2)
  •   {
  •       if(Uart2_Rx_Cnt > 254)
  •       {
  •        Uart2_Rx_Cnt = 0;
  •        memset(RxBuffer_2,0x00,sizeof(RxBuffer_2));
  •      
  •       }  
  •       else
  •       {
  •          RxBuffer_2[Uart2_Rx_Cnt++] = aRxBuffer_2;
  •        
  •     }
  •     HAL_UART_Receive_IT(&huart2, (uint8_t *)&aRxBuffer_2, 1);  
  •   }else if(huart->Instance == USART3)
  •   {
  •       if(Uart3_Rx_Cnt > 254)
  •       {
  •        Uart3_Rx_Cnt = 0;
  •        memset(RxBuffer_3,0x00,sizeof(RxBuffer_3));
  •       }  
  •       else
  •       {
  •          RxBuffer_3[Uart3_Rx_Cnt++] = aRxBuffer_3;
  •        
  •        
  •       }
  •       HAL_UART_Receive_IT(&huart3, (uint8_t *)&aRxBuffer_3, 1);  
  •   }
  •  UNUSED(huart);
  • }
  1. 添加H文件声明代码
  • extern void Usart2_Send( char *str,uint8_t strlen);
  • extern void Usart2_Send( char *str,uint8_t strlen);

 

  1. 添加定义数字代码
  • uint8_t aRxBuffer_2 = 0;
  • uint8_t aRxBuffer_3 = 0;
  • unsigned char aRxBuffer_hlp = 0;
  • unsigned char Uart2_Rx_Cnt = 0;
  • unsigned char Uart3_Rx_Cnt = 0;
  • unsigned char RxBuffer_2[RXBUFFERSIZE];
  • unsigned char RxBuffer_3[RXBUFFERSIZE];
  • unsigned char hlpUart1_Rx_Cnt =0;
  • unsigned char RxBuffer_hlp[RXBUFFERSIZE];

 

 

2.4、串口通讯测试

 

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

回复
举报

162

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

usart(1).rar (25.32 MB, 下载次数: 0)
此帖出自stm32/stm8论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
立即报名 | 2025 瑞萨电子工业以太网技术日即将开启!
3月-4月 深圳、广州、北京、苏州、西安、上海 走进全国6城
2025瑞萨电子工业以太网技术巡回沙龙聚焦工业4.0核心需求,为工程师与企业决策者提供实时通信技术最佳解决方案。
预报从速,好礼等您拿~

查看 »

 
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
快速回复 返回顶部 返回列表