你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32N6570-DK评测】串口1printf输出测试

[复制链接]
TLLED 发布时间:2025-2-7 23:23
测试串口usart1的printf输出。

一、硬件部分

1.1、电路图串口部分

板载仿真器上的虚拟串口连接到开发板的PE5和PE6引脚。

001.png

002.png



1.2、串口端口映射

003.png



二、程序部分



2.1、usart.c
  1. #include "main.h"
  2. #include "usart/usart.h"

  3. UART_HandleTypeDef g_usart1_handle;

  4. int fputc(int ch, FILE *f)
  5. {
  6.     while ((USART_UX->ISR & 0X40) == 0);     

  7.     USART_UX->TDR = (uint8_t)ch;            
  8.     return ch;
  9. }

  10. void usart_init(uint32_t baudrate)
  11. {
  12.         GPIO_InitTypeDef gpio_init_struct;
  13.        
  14.         USART_UX_CLK_ENABLE();                                       
  15.         USART_TX_GPIO_CLK_ENABLE();                                 
  16.         USART_RX_GPIO_CLK_ENABLE();
  17.         gpio_init_struct.Pin = USART_TX_GPIO_PIN;                    
  18.         gpio_init_struct.Mode = GPIO_MODE_AF_PP;                     
  19.         gpio_init_struct.Pull = GPIO_PULLUP;                        
  20.         gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;               
  21.         gpio_init_struct.Alternate = USART_TX_GPIO_AF;               
  22.         HAL_GPIO_Init(USART_TX_GPIO_PORT, &gpio_init_struct);        

  23.         gpio_init_struct.Pin = USART_RX_GPIO_PIN;                    
  24.         gpio_init_struct.Alternate = USART_RX_GPIO_AF;               
  25.         HAL_GPIO_Init(USART_RX_GPIO_PORT, &gpio_init_struct);        

  26.         g_usart1_handle.Instance = USART_UX;                     
  27.         g_usart1_handle.Init.BaudRate = baudrate;               
  28.         g_usart1_handle.Init.WordLength = UART_WORDLENGTH_8B;   
  29.         g_usart1_handle.Init.StopBits = UART_STOPBITS_1;         
  30.         g_usart1_handle.Init.Parity = UART_PARITY_NONE;         
  31.         g_usart1_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE;   
  32.         g_usart1_handle.Init.Mode = UART_MODE_TX_RX;            
  33.         HAL_UART_Init(&g_usart1_handle);                        
  34.    
  35. }
复制代码


2.2、usart.h
  1. #ifndef _USART_H
  2. #define _USART_H

  3. #include "stdio.h"

  4. #define USART_TX_GPIO_PORT              GPIOE
  5. #define USART_TX_GPIO_PIN               GPIO_PIN_5
  6. #define USART_TX_GPIO_AF                GPIO_AF7_USART1
  7. #define USART_TX_GPIO_CLK_ENABLE()      do{ __HAL_RCC_GPIOE_CLK_ENABLE(); }while(0)  

  8. #define USART_RX_GPIO_PORT              GPIOE
  9. #define USART_RX_GPIO_PIN               GPIO_PIN_6
  10. #define USART_RX_GPIO_AF                GPIO_AF7_USART1
  11. #define USART_RX_GPIO_CLK_ENABLE()      do{ __HAL_RCC_GPIOE_CLK_ENABLE(); }while(0)   

  12. #define USART_UX                        USART1
  13. #define USART_UX_CLK_ENABLE()           do{ __HAL_RCC_USART1_CLK_ENABLE(); }while(0)

  14. void usart_init(uint32_t baudrate);         

  15. #endif
复制代码


2.3、main.c
  1. int main(void)
  2. {

  3.   /* USER CODE BEGIN 1 */

  4.   /* USER CODE END 1 */

  5.   /* MCU Configuration--------------------------------------------------------*/
  6.   HAL_Init();

  7.   /* USER CODE BEGIN Init */

  8.   /* USER CODE END Init */

  9.   /* Configure the system clock */
  10.   SystemClock_Config();

  11.   /* Configure the peripherals common clocks */
  12.   PeriphCommonClock_Config();

  13.   /* USER CODE BEGIN SysInit */

  14.   /* USER CODE END SysInit */

  15.   /* Initialize all configured peripherals */
  16. //  MX_GPIO_Init();
  17. //  MX_ADC1_Init();
  18. //  MX_CSI_Init();
  19. //  MX_I2C1_Init();
  20. //  MX_I2C2_Init();
  21. //  MX_ICACHE_Init();
  22. //  MX_MDF1_Init();
  23. //  MX_SAI1_Init();
  24. //  MX_SDMMC2_SD_Init();
  25. //  MX_UCPD1_Init();
  26. //  MX_USART1_UART_Init();
  27. //  MX_USB1_OTG_HS_USB_Init();
  28. //  MX_USB2_OTG_HS_HCD_Init();
  29. //  MX_XSPI1_Init();
  30. //  MX_XSPI2_Init();
  31.   /* USER CODE BEGIN 2 */
  32.         usart_init(115200);
  33.         init_led();
  34.   /* USER CODE END 2 */

  35.   /* Infinite loop */
  36.   /* USER CODE BEGIN WHILE */
  37.   while (1)
  38.   {
  39.     /* USER CODE END WHILE */

  40.     /* USER CODE BEGIN 3 */
  41.                 printf(" usart1 printf test! \r\n");
  42.                 led1_tog();
  43.                 led2_tog();
  44.                 //HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
  45.                 //HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
  46.     /* Insert delay 200 ms */
  47.     HAL_Delay(200);
  48.   }
  49.   /* USER CODE END 3 */
  50. }
复制代码


三、运行结果


仿真运行后,串口输出
004.png



四、附件


源代码: stm32n6570_cubemx_prj_printf.rar (6.78 MB, 下载次数: 7)
收藏 评论0 发布时间:2025-2-7 23:23

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版