[STM32H7] 【STM32H7S78-DK测评】-2- 串口输出

[复制链接]
 楼主| 南来之风 发表于 2024-9-7 21:29 | 显示全部楼层 |阅读模式
<
本帖最后由 南来之风 于 2024-9-7 13:16 编辑

板载的STlink有虚拟串口通信的功能,连接到H7芯片的PD0与PD1引脚。
1.png     2.png

在上一次项目的基础上,打开图形化配置界面,配置UART功能。
3.png

在Connectivity一栏,找到UART4,然后在右侧配置参数。 4.png

默认的引脚不是PD0与PD1,手动更改一下即可。
5.png

点击保存,自动生成代码。
  1. static void MX_UART4_Init(void)
  2. {

  3.   /* USER CODE BEGIN UART4_Init 0 */

  4.   /* USER CODE END UART4_Init 0 */

  5.   /* USER CODE BEGIN UART4_Init 1 */

  6.   /* USER CODE END UART4_Init 1 */
  7.   huart4.Instance = UART4;
  8.   huart4.Init.BaudRate = 115200;
  9.   huart4.Init.WordLength = UART_WORDLENGTH_8B;
  10.   huart4.Init.StopBits = UART_STOPBITS_1;
  11.   huart4.Init.Parity = UART_PARITY_NONE;
  12.   huart4.Init.Mode = UART_MODE_TX_RX;
  13.   huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  14.   huart4.Init.OverSampling = UART_OVERSAMPLING_16;
  15.   huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  16.   huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1;
  17.   huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  18.   if (HAL_UART_Init(&huart4) != HAL_OK)
  19.   {
  20.     Error_Handler();
  21.   }
  22.   if (HAL_UARTEx_SetTxFifoThreshold(&huart4, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  23.   {
  24.     Error_Handler();
  25.   }
  26.   if (HAL_UARTEx_SetRxFifoThreshold(&huart4, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  27.   {
  28.     Error_Handler();
  29.   }
  30.   if (HAL_UARTEx_DisableFifoMode(&huart4) != HAL_OK)
  31.   {
  32.     Error_Handler();
  33.   }
  34.   /* USER CODE BEGIN UART4_Init 2 */

  35.   /* USER CODE END UART4_Init 2 */

  36. }


接下来编写应用程序代码。首先定义好要输出的字符串:
  1. /* USER CODE BEGIN 0 */
  2. uint8_t UartTestStr[] = "Hello 21ic, Hello STM32H7S78-DK!";
  3. /* USER CODE END 0 */

主程序中直接调用HAL库的发送API接口:
  1. int main(void)
  2. {

  3.   /* USER CODE BEGIN 1 */

  4.   /* USER CODE END 1 */

  5.   /* MPU Configuration--------------------------------------------------------*/
  6.   MPU_Config();

  7.   /* MCU Configuration--------------------------------------------------------*/

  8.   /* Update SystemCoreClock variable according to RCC registers values. */
  9.   SystemCoreClockUpdate();

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

  12.   /* USER CODE BEGIN Init */

  13.   /* USER CODE END Init */

  14.   /* USER CODE BEGIN SysInit */

  15.   /* USER CODE END SysInit */

  16.   /* Initialize all configured peripherals */
  17.   MX_GPIO_Init();
  18.   MX_UART4_Init();
  19.   /* USER CODE BEGIN 2 */
  20.   HAL_UART_Transmit(&huart4, "\r\nUART4 Init Done", sizeof("\r\nUART4 Init Done"), 0xffffffff);
  21.   HAL_UART_Transmit(&huart4, UartTestStr, sizeof(UartTestStr), 0xffffffff);
  22.   /* USER CODE END 2 */

  23.   /* Infinite loop */
  24.   /* USER CODE BEGIN WHILE */
  25.   while (1)
  26.   {
  27.     /* USER CODE END WHILE */

  28.     /* USER CODE BEGIN 3 */
  29.         HAL_UART_Transmit(&huart4, "\r\nLD1 GREEN TOGGLE", sizeof("\r\nLD1 GREEN TOGGLE"), 0xffffffff);
  30.         HAL_GPIO_TogglePin(LD1_GPIO_PORT, LD1_PIN);
  31.         /* Insert delay 100 ms */
  32.         HAL_UART_Transmit(&huart4, "\r\nLD2 ORANGE TOGGLE", sizeof("\r\nLD2 ORANGE TOGGLE"), 0xffffffff);
  33.         HAL_Delay(1000);
  34.         HAL_GPIO_TogglePin(LD2_GPIO_PORT, LD2_PIN);
  35.         /* Insert delay 100 ms */
  36.         HAL_Delay(1000);
  37.   }
  38.   /* USER CODE END 3 */
  39. }


打开串口工具TeraTerm,配置串口参数:
6492266dbe0cb4c4e3.png

实物效果:

uart.gif

Amazingxixixi 发表于 2024-10-31 15:59 | 显示全部楼层
现在用CUBE配置简单地多了,不像以前那样。
地瓜patch 发表于 2024-10-31 17:58 来自手机 | 显示全部楼层
最右侧是bga封装的引脚图,一打眼以为是点阵图形
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

290

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

69

主题

290

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部