854|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/6 下一条

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