当前位置: 首页 > web >正文

STM32H7 CubeMx 串口一配置

目录

1. CubeMx配置

1.1 创建工程

1.2 时钟配置

1.3 串口配置

1.4 工程管理

2. Keil5配置

2.1 添加代码

2.2 修改配置

2.3 下载程序

3. 试验现象

常见问题解决办法


本文主要记录使用CubeMx配置STM32H750ZB串口一的过程,包括遇到的问题。

1. CubeMx配置

1.1 创建工程

选择型号,开始工程

1.2 时钟配置

1.3 串口配置

1.4 工程管理

2. Keil5配置

2.1 添加代码

main.c

/* USER CODE BEGIN Includes */
#include "string.h"
#include "stdio.h"
/* USER CODE END Includes */...../* USER CODE BEGIN 0 */
extern UART_HandleTypeDef huart1;
char send[] = "OK";
uint8_t test[2];
/* USER CODE END 0 */.....MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Receive_IT(&huart1,test,1);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */printf("my test\r\n");HAL_Delay(1000);}/* USER CODE END 3 */...../* USER CODE BEGIN 4 */
// 发送中断
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART1){// HAL_UART_IRQHandler(&huart1);printf("HAL_UART_TxCpltCallback\r\n");HAL_UART_Receive_IT(&huart1,test,1);}
}
// 接收中断函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{char send[] = "OK\r\n";if(huart->Instance == USART1){// HAL_UART_IRQHandler(&huart1);if(test[0] == 1){printf("test[0] == 1\r\n");HAL_UART_Transmit_IT(&huart1, (uint8_t*)send, strlen(send));// HAL_UART_Transmit(&huart1,(uint8_t*)send,strlen(send), 50);  // 串口发送数据,使用超时管理机制test[0] = 0;}HAL_UART_Receive_IT(&huart1,test,1);}}
/* USER CODE END 4 */

usart.c

/* USER CODE BEGIN 0 */
#include "stdio.h"
/* USER CODE END 0 *//* USER CODE BEGIN 1 */
/*** 函数功能: 重定向c库函数printf到DEBUG_USARTx* 输入参数: 无* 返 回 值: 无* 说    明:无*/
int fputc(int ch, FILE *f)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);return ch;
}/*** 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx* 输入参数: 无* 返 回 值: 无* 说    明:无*/
int fgetc(FILE *f)
{uint8_t ch = 0;HAL_UART_Receive(&huart1, &ch, 1, 0xffff);return ch;
}
/* USER CODE END 1 */

2.2 修改配置

重新编译

2.3 下载程序

这里使用jlink,下边是缺少有关STM32H750ZB相关的软件,搜索下,安装下即可。

(如果搜索不到,可以考虑升级keil版本)

3. 试验现象

常见问题解决办法

程序烧录有问题常见解决办法

常见解决办法一:

常见解决办法二:

修改CubeMX里面的时钟

常见解决办法三:

修改CubeMX里面的堆栈大小

http://www.xdnf.cn/news/13244.html

相关文章:

  • TI以太网PHY收发器晶体选择和规格
  • 在 macOS 上搭建 Flutter 开发环境
  • python报错“TypeError: ‘WebElement‘ object is not iterable”如何解决?
  • K8s简述
  • 少儿编程是不是智商税
  • 在centos 8上编译安装php8.0
  • stm32驱动ULN2003控制28BYJ48步进电机原理及代码(通俗易懂)
  • CentOS 7.3环境中部署Kerberos集群
  • AI时代,数据分析师如何成为不可替代的个体
  • Ubuntu中安装CURL
  • 76. 最小覆盖子串 Java版
  • 精准夹持,稳定控制:IXTUR气控永磁铁选型全攻略(涵盖MAP、MRP与LI-120系列)
  • 电针联手神经干细胞外泌体:破解围绝经期抑郁症的海马修复密码【AbMole】
  • 输入与输出(I/O):文件与数据流的处理艺术!
  • PHP使用经纬度获取两个位置的距离以及范围查询
  • Deepseek大模型私有化部署
  • 手游刚开服就被攻击怎么办?如何防御DDoS?
  • 香港虚拟主机安装WordPress
  • vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能
  • 学习日记-day25-6.9
  • 分布式系统常见的四种数据一致性模型
  • 即梦图片 3.0 智能参考全量上线,开启 AI 设计零门槛新时代
  • 【链接、装载和库】三、目标文件详解
  • 什么是Java bean的依赖注入
  • 在 Figma 中导出图标为 Iconfont
  • img src 图片缓存问题
  • [软件测试]:什么软件测试?如何设计测试用例?
  • 【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
  • vue3 简易的pc端音频播放器组件
  • 编写整洁的python之装饰器