[STM32H7] 【STM32H7S78-DK测评】测评之二:点个灯

[复制链接]
 楼主| abner_ma 发表于 2024-9-18 22:53 | 显示全部楼层 |阅读模式
<
本帖最后由 abner_ma 于 2024-9-18 22:54 编辑

   STM32H7R7/S7系列定位在于性价比高,是一款基于bootflash的MCU,具有Cortex®-M7内核,运行频率高达600 MHz,拥有64 KB用户bootflash、可灵活配置的620 KB SRAM以及带Flex ECC的32 x 32 KB缓存。STM32H7R7/S7系列支持高速外部存储器接口和XiP,提供5种不同封装,以在极低成本下实现出色性能。专用图形系列可利用NeoChrom GPU、JPEG编解码器和LTDC实现类似MPU的GUI,最大程度减少CPU的介入。
1 )外部存储器容量不受限制FMC(NAND、NOR、SDRAM的并行接口)、2个200MHz DTR(1-16位,支持双边沿)串行xSPI接口以及用于连接任何类型存储器的eMMC.
2 )64 KB bootflash(用户Flash)和可灵活配置的620 KB SRAM(包括TCM),用于实时应用中所需的零等待访问
3 )600 MHz bootflash MCU(3174 CoreMark和1284 DMIPS)
4 )从内部和外部存储器实时执行
5) 2个USB-FS/HS,具有USB Type-C®供电 (UCPD) 功能和I3C
6 )集成式电源管理 (PMIC)
7 )NeoChrom GPU对2D和2.5D GUI进行加速,JPEG编解码器用于MJPEG视频的流畅播放
8 ) 内存/GPU/显示器之间的智能DMA架构将CPU负载限制在5-10%
9 ) 可在高清分辨下运行
   keil IDE支持还不太完善,上STM32CubeIDE 1.16.0+cubeMX联合开发。






00.png
01.png
5.png
6.png 4
配置好时钟,就打通任督二脉

3.png
4.png

1.png
2.png
03.png

轻松点个灯玩玩

  1. #include "main.h"

  2. int main(void)
  3. {

  4.   /* USER CODE BEGIN 1 */

  5.   /* USER CODE END 1 */

  6.   /* Enable the CPU Cache */

  7.   /* Enable I-Cache---------------------------------------------------------*/
  8.   SCB_EnableICache();

  9.   /* Enable D-Cache---------------------------------------------------------*/
  10.   SCB_EnableDCache();

  11.   /* MCU Configuration--------------------------------------------------------*/

  12.   /* Update SystemCoreClock variable according to RCC registers values. */
  13.   SystemCoreClockUpdate();

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

  16.   /* USER CODE BEGIN Init */

  17.   /* USER CODE END Init */

  18.   /* USER CODE BEGIN SysInit */

  19.   /* USER CODE END SysInit */

  20.   /* Initialize all configured peripherals */
  21.   MX_GPIO_Init();
  22.   /* USER CODE BEGIN 2 */

  23.   /* USER CODE END 2 */

  24.   /* Infinite loop */
  25.   /* USER CODE BEGIN WHILE */
  26.   while (1)
  27.   {
  28.     /* USER CODE END WHILE */
  29.           HAL_GPIO_TogglePin(GPIOM, LD4_Pin|LD3_Pin);
  30.           HAL_GPIO_TogglePin(GPIOO, LD1_Pin|LD2_Pin);
  31.           HAL_Delay(1000);
  32.     /* USER CODE BEGIN 3 */
  33.   }
  34.   /* USER CODE END 3 */
  35. }

  36. /**
  37.   * [url=home.php?mod=space&uid=247401]@brief[/url] GPIO Initialization Function
  38.   * @param None
  39.   * @retval None
  40.   */
  41. static void MX_GPIO_Init(void)
  42. {
  43.   GPIO_InitTypeDef GPIO_InitStruct = {0};
  44. /* USER CODE BEGIN MX_GPIO_Init_1 */
  45. /* USER CODE END MX_GPIO_Init_1 */

  46.   /* GPIO Ports Clock Enable */
  47.   __HAL_RCC_GPIOM_CLK_ENABLE();
  48.   __HAL_RCC_GPIOO_CLK_ENABLE();

  49.   /*Configure GPIO pin Output Level */
  50.   HAL_GPIO_WritePin(GPIOM, LD4_Pin|LD3_Pin, GPIO_PIN_RESET);

  51.   /*Configure GPIO pin Output Level */
  52.   HAL_GPIO_WritePin(GPIOO, LD1_Pin|LD2_Pin, GPIO_PIN_RESET);

  53.   /*Configure GPIO pins : LD4_Pin LD3_Pin */
  54.   GPIO_InitStruct.Pin = LD4_Pin|LD3_Pin;
  55.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  56.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  57.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  58.   HAL_GPIO_Init(GPIOM, &GPIO_InitStruct);

  59.   /*Configure GPIO pins : LD1_Pin LD2_Pin */
  60.   GPIO_InitStruct.Pin = LD1_Pin|LD2_Pin;
  61.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  62.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  63.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  64.   HAL_GPIO_Init(GPIOO, &GPIO_InitStruct);

  65. /* USER CODE BEGIN MX_GPIO_Init_2 */
  66. /* USER CODE END MX_GPIO_Init_2 */
  67. }

  68. /* USER CODE BEGIN 4 */

  69. /* USER CODE END 4 */

  70. /**
  71.   * [url=home.php?mod=space&uid=247401]@brief[/url]  This function is executed in case of error occurrence.
  72.   * @retval None
  73.   */
  74. void Error_Handler(void)
  75. {
  76.   /* USER CODE BEGIN Error_Handler_Debug */
  77.   /* User can add his own implementation to report the HAL error return state */
  78.   __disable_irq();
  79.   while (1)
  80.   {
  81.   }
  82.   /* USER CODE END Error_Handler_Debug */
  83. }

  84. #ifdef  USE_FULL_ASSERT
  85. /**
  86.   * [url=home.php?mod=space&uid=247401]@brief[/url]  Reports the name of the source file and the source line number
  87.   *         where the assert_param error has occurred.
  88.   * @param  file: pointer to the source file name
  89.   * @param  line: assert_param error line source number
  90.   * @retval None
  91.   */
  92. void assert_failed(uint8_t *file, uint32_t line)
  93. {
  94.   /* USER CODE BEGIN 6 */
  95.   /* User can add his own implementation to report the file name and line number,
  96.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  97.   /* USER CODE END 6 */
  98. }
  99. #endif /* USE_FULL_ASSERT */
https://www.bilibili.com/video/BV1bNpJeDEiX/?buvid=XY75B537C416E17A953A00A33EDB883CA28EB&is_story_h5=false&mid=Pw2Hq3t6IhfKj%2FPD%2Bao96g%3D%3D&plat_id=147&share_from=ugc&share_medium=android&share_plat=android&share_session_id=8758dcb1-5e96-49bd-b2c9-ab99ce05f44c&share_source=WEIXIN&share_tag=s_i×tamp=1726671158&unique_k=6ODxL4z&up_id=526937168





  
jhcj2014 发表于 2024-10-5 23:01 | 显示全部楼层
这个代码写得很长。
xionghaoyun 发表于 2024-10-10 11:31 | 显示全部楼层
配工程太麻烦了
菜鸟的第一步 发表于 2024-10-10 14:34 | 显示全部楼层

因为是只点了灯,项目大了还是用软件配置方便
Stahan 发表于 2024-10-13 23:47 | 显示全部楼层
直接生成初始化工程比较方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

95

主题

181

帖子

3

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