打印
[STM32H7]

【STM32H7S78-DK测评】测评之四:串口打印测试

[复制链接]
1245|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
   STM32H7S78-DK开发板的主控制器为STM32H7S7L8H6H,其片上存储器资源包括:620 KB SRAM,64 KB Flash。它的片上Flash仅有64 KB,比片上SRAM还要小。对于稍微复杂的项目,64KB根本不够用。但是它有超能力:XIP实现直接执行外部存储器上的代码。
STM32H7R/S系列外部存储器接口和控制器包括:2个SD/SDIO/MMC接口;2个 Octo-SPI 存储器接口,或者1个Octo-SPI + 1个 Hexa-SPI接口,支持XIP;
灵活存储器控制器(FMC),可以支持到32比特位宽,支持SRAM, PSRAM, FRAM, SDR/LPSDR SDRAM, NOR/NAND存储器;
     STM32H7S78-DK开发板上搭载了两个外部存储器,分别是:
256 Mbit Octo-SPI PSRAM   APS256XXN-OBR-BG
1 Gbit Octo-SPI NOR Flash  MX66UW1G45GXDI00

   开发板框架:


开发板晶振;24M

chubeMX工程搭建





时钟配置:





串口配置:
static void MX_UART4_Init(void)
{

  /* USER CODE BEGIN UART4_Init 0 */

  /* USER CODE END UART4_Init 0 */

  /* USER CODE BEGIN UART4_Init 1 */

  /* USER CODE END UART4_Init 1 */
  huart4.Instance = UART4;
  huart4.Init.BaudRate = 115200;
  huart4.Init.WordLength = UART_WORDLENGTH_8B;
  huart4.Init.StopBits = UART_STOPBITS_1;
  huart4.Init.Parity = UART_PARITY_NONE;
  huart4.Init.Mode = UART_MODE_TX_RX;
  huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart4.Init.OverSampling = UART_OVERSAMPLING_16;
  huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1;
  huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  if (HAL_UART_Init(&huart4) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_SetTxFifoThreshold(&huart4, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_SetRxFifoThreshold(&huart4, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_DisableFifoMode(&huart4) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN UART4_Init 2 */

  /* USER CODE END UART4_Init 2 */

}



定义一个数组
const char *str = "Hello 21ic, Hello STM32H7S78-DK!\n";
两种方式实现打印:

HAL_UART_Transmit(&huart4, (uint8_t*)str, strlen(str), HAL_MAX_DELAY);
printf("Hello 21ic, Hello STM32H7S78-DK!\n");
HAL_Delay(500);









使用特权

评论回复
沙发
abner_ma|  楼主 | 2024-10-7 17:02 | 只看该作者
重写fputc()函数:
int fputc(int ch,FILE *f)
{
        uint8_t temp[1] = {ch};
       

        HAL_UART_Transmit(&huart4,temp,1,2);
        return ch;
}

使用特权

评论回复
板凳
星辰大海不退缩| | 2024-10-8 22:20 | 只看该作者
abner_ma 发表于 2024-10-7 17:02
重写fputc()函数:
int fputc(int ch,FILE *f)
{

串口重映射非常实用

使用特权

评论回复
地板
Stahan| | 2024-10-13 23:54 | 只看该作者
这个重定向函数最方便了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:项目经理
简介:资深嵌入式开发工程师

83

主题

156

帖子

3

粉丝