[STM32H5]【STM32 Nucleo-64测评】1、GPIO&UART测试

一、STM32 Nucleo-64NUCLEO-H533RE)基本信息

 

首先感谢21IC和意法半导体提供这次评测计划。本次评测的开发板是NUCLEO-H533RE。板载STM32H533RET6 MCU。
STM32H533RETx 是STM32H5 Series产品,核心Cortex-M33, 240 MHz;flash:512kb;SRAM1_2:208KB;SRAM3:64KB。
花了一些时间安装了STM32CubeMX、Keil.STM32H5xx_DFP.1.3.0.pack,下载了STM32Cube_FW_H5_V1.3.0。
1. STM32CubeMX下载地址
https://www.st.com.cn/content/ccc/resource/technical/software/sw_development_suite/group1/ad/c5/eb/69/7e/2c/43/3d/stm32cubemx-win-v6-12-0/files/stm32cubemx-win-v6-12-0.zip/jcr:content/translations/en.stm32cubemx-win-v6-12-0.zip
2.Keil.STM32H5xx_DFP.1.3.0.pack下载地址:
https://www.keil.com/pack/Keil.STM32H5xx_DFP.1.3.0.pack
3.STM32Cube_FW_H5_V1.3.0下载地址:
https://www.st.com/en/embedded-software/stm32cubeh5.html
https://github.com/STMicroelectronics/STM32CubeH5
https://www.st.com.cn/content/ccc/resource/technical/software/firmware/group2/e6/6a/ac/95/1f/33/46/5b/stm32cubeh5-v1-3-0/files/stm32cubeh5-v1-3-0.zip/jcr:content/translations/en.stm32cubeh5-v1-3-0.zip



 

 

开发板特性:
· 提供1个用户GREEN LED(PA5)
· 1个用户按钮(PC13)和1个复位按钮
· MCU所有IO口引出、并提供ARDUINO® Uno V3扩展连接器
· 可以选择的5种供电方式:ST-LINK、USB VBUS或外部电源等。
· 板载ST-LINK调试器/编程器:ST-LINK主控STM32F723(有点奢侈)。

二、STM32CubeMX配置工程

NUCLEO-H533RE提供的扩展外设并不多,可直接利用板上的资源:UART2、PA5(LED)、PC13(USER KEY)



三、通过串口通信指令控制 【点灯实验&按钮切换】

1、UART2配置:

复制
static void MX_USART2_UART_Init(void)

{



  /* USER CODE BEGIN USART2_Init 0 */



  /* USER CODE END USART2_Init 0 */



  /* USER CODE BEGIN USART2_Init 1 */



  /* USER CODE END USART2_Init 1 */

  huart2.Instance = USART2;

  huart2.Init.BaudRate = 115200;

  huart2.Init.WordLength = UART_WORDLENGTH_8B;

  huart2.Init.StopBits = UART_STOPBITS_1;

  huart2.Init.Parity = UART_PARITY_NONE;        //UART_PARITY_NONE;        //UART_PARITY_ODD

  huart2.Init.Mode = UART_MODE_TX_RX;

  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;

  huart2.Init.OverSampling = UART_OVERSAMPLING_16;

  huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;

  huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1;

  huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;

  if (HAL_UART_Init(&huart2) != HAL_OK)

  {

    Error_Handler();

  }

  if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)

  {

    Error_Handler();

  }

  if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)

  {

    Error_Handler();

  }

  if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK)

  {

    Error_Handler();

  }

  /* USER CODE BEGIN USART2_Init 2 */



  /* USER CODE END USART2_Init 2 */



}



2、printf、scanf重定向:(为支持printf,keil中需勾选Use MicroLIB否则不起作用)

复制
int fputc(int ch, FILE *f)

{

  /* Place your implementation of fputc here */

  /* e.g. write a character to the USART3 and Loop until the end of transmission */

  HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);



  return ch;

}



int fgetc(FILE *f)

{

        int ch;

        /* 等待串口输入数据 */

        while (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_RXNE) == RESET);

        HAL_UART_Receive(&huart2, (uint8_t *)&ch, 1, 0xFFFF);

        return (ch);

}




3、通过UART打印信息:

复制
static void Show_Message(void)

{

        printf("板子名称:%s\r\n",BSP_GetBoardName());

        printf("版本:%d\r\n",BSP_GetVersion());

        printf("板子ID:%s\r\n",BSP_GetBoardID());

        printf("【STM32 Nucleo-64测评】1、GPIO&USART\r\n");

        

        printf("\r\n通过串口通信指令控制 【点灯实验&按钮切换】 \n");

        printf("\r\n按USER key 切换灯状态 \n");

        printf("使用 USART 参数为:%d \n",115200);

        printf(" 0 ------ 灭 \n");

        printf(" 1 ------ 亮 \n");

        printf(" 2 ------ 获得状态 \n");

}




4、main()函数片段:
UART接收到0:熄灭灯,1:点灯。

复制
 while (1)

  {

                ch=getchar();

                printf("接收到字符:%c\n",ch);

                

                switch (ch) {

                                case '0':

                                        BSP_LED_Off(LED2);

                                        

                                break;

                                case '1':

                                        BSP_LED_On(LED2);

                                break;

                                case '2':

                                        printf("LED2状态【%d】 \r\n",BSP_LED_GetState(LED2));

                                        break;

                        }

  }

5、user key切换点灯
通过PC13中断方式控制灯亮灭

复制
void BSP_PB_Callback(Button_TypeDef Button)

{

        if(BUTTON_USER==Button){

                BSP_LED_Toggle(LED2);

        }

}



四、总结

1、NUCLEO-H533RE是STM32H5系列的产品,SDK中提供的例子并不多。但是同一系列中还有NUCLEO-H503RB、NUCLEO-H563ZI等几个产品,因为采用HAL库,例程应该是可以通用吧。

2、如果用keil编译,MDK可能至少要5.37以上版本,我用的是MDK5.40。
3、M33是比M4性能高,比M7性能低,总体来说是比较高端。
4、板子的信息可以从官方上下载:《um3121-stm32h5-nucleo64-board-mb1814-stmicroelectronics》
5、如何确认ST-LINK虚拟串口是USART2?

在《um3121-stm32h5-nucleo64-board-mb1814-stmicroelectronics》中有上面的描述,
查看下板子:SB1、SB2、SB19、SB33是用0欧电阻短接,所以用的USART2

STM32CubeMX配置中也可以看到:

源码:

 TEST.rar (354.16 KB)。
---------------------
作者:sujingliang
链接:https://bbs.21ic.com/icview-3390254-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值