请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 699|回复: 3

STM32H743I-EVAL2_GPIO_EXTI

[复制链接]

20

主题

24

帖子

154

积分

注册会员

Rank: 2

积分
154
发表于 2020-1-26 05:27:05 | 显示全部楼层 |阅读模式
前言

用STM32F407作的产品板子,遇到领导奔放的想法,内存有点不够用。
一般的工程,瓶颈都在内存上。而不会说存代码的FLASH区不够了。编译完的bin文件300KB, 那代码量都不少呢。
ST代理商的FAE推荐用STM32H743, FLASH 2MB, RAM 1024KB.
今年的年假请的NB, 请到2月20日去了, 可以作预研。
上个F407的板子,是以前同事好久前写的,用的是固件库。
预研一下STM32H743,  只是为了用更大的片内内存. 但是ST官方,现在已经只提供HAL库了。
h743的固件包现在为 stm32cube_fw_h7_v160.zip
整了一块ST官方的板子STM32H743I-EVAL2. 看看官方demo是怎么写的。
官方板子做的很漂亮,秀一下板子:P


\STM32Cube_FW_H7_V1.6.0\Projects\STM32H743I-EVAL\Examples 是知识点的demo, 每个demo只验证一个知识点。
反正都要过一遍,随便挑了一个知识点 GPIO_EXTI开始第一个知识点的预研。
GPIO_EXTI 讲的是H743如何响应外部GPIO中断。e.g. 按下一个键,如何通过外部中断的方式,对按键引起的外部中断做出响应。
试验

先过一遍官方的GPIO_EXTI工程,然后用STM32CubeMX重建一个工程。
STM32CubeMX当前版本是5.5.0, 先从开发板选择器,先选择STM32H743I-EVAL2,保存一个.ioc备用。
  1. STM32H743XIHx        Package = TFBGA240        Flash = 2048KB        RAM = 1024KB        FREQ = 480MHZ
复制代码
从MCU选择器开始工程的配置, MCU选择为 STM32H743XI
PC.13是个按钮,选择为外部中断方式。

开启NVIC中的外部中断。


将RCC使能,HSE,LSE都用外部晶振。
从en.MB1246-b0x_schematic.pdf 可知, HSE晶振为25MHZ, LSE晶振为32.768KHZ.
参考官方板子的.ioc,调整时钟参数。
但是要使用HSE外部晶振25MHZ,让CPU时钟频率配置在最大的480MHZ.
填好25MHZ的HSE, 选PLL锁相环为时钟源,选CSS Enable, 在D1CPRE Clock中填入480, 然后回车,让CubeMX来自动调整时钟到最大的可能方案。

设置一下产生代码的选项。


这一步,不要选“将不用的引脚设置成模拟输入”,要不初始化GPIO的代码很长,看不清了。
正式工程可以选。

现在可以生成初始化代码了。
生成的工程代码很干净,每一种外设都为单独的.c实现。
工程选项中要确认CPU时钟频率和优化等级。

可以看到选项中的CPU时钟和用STM32CubeMx配置出的HPRE时钟频率是一样的。

优化等级要整成0,要不断点断不下来。
现在单步一下SystemClock_Config(),看看是否使用了外部晶振HSE.
进入SystemClock_Config(), 可以看到PLL的参数和CubeMX配置的相同。
可以看出,是使用了外部晶振。
  1.   RCC_OscInitStruct.PLL.PLLM = 5;  RCC_OscInitStruct.PLL.PLLN = 192;  RCC_OscInitStruct.PLL.PLLP = 2;  RCC_OscInitStruct.PLL.PLLQ = 2;  RCC_OscInitStruct.PLL.PLLR = 2;
复制代码
关于时钟tick是否为1ms, 后续看官方demo. 看到用了(HAL_TICK_FREQ_DEFAULT      = HAL_TICK_FREQ_1KHZ), 好像tick是1ms.
现在可以添加外部中断响应的代码了

因为可能要重复使用CubeMx来调整硬件设置,来重复生成新的初始化代码。
所以,要将自己的代码放在ST约定的代码边界里面。可以防止重新生成初始化代码时,冲掉自己手写的代码。
  1. /* USER CODE BEGIN x */// my code need write on here/* USER CODE END x */
复制代码
先看看如果外部中断响应了,要干点啥。
官方demo中,是翻转LED灯,我们也这样搞。
从\resource\en.MB1246-b0x_schematic.pdf中可以看出PF.10是一个LED灯。
先增加灯的初始化和翻转代码。
  1. /* USER CODE BEGIN 2 */void LED_init(void){  GPIO_InitTypeDef  gpio_init_structure;    // PF.10 is a LED  __HAL_RCC_GPIOF_CLK_ENABLE(); // enable pin clock first    gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;  gpio_init_structure.Pull = GPIO_PULLUP;  gpio_init_structure.Speed = GPIO_SPEED_FREQ_HIGH;  gpio_init_structure.Pin = GPIO_PIN_10;  HAL_GPIO_Init(GPIOF, &gpio_init_structure);    // set pin default status  HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);}/* USER CODE END 2 */
复制代码
EXTI15_10_IRQHandler()中调用HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
HAL_GPIO_EXTI_IRQHandler()调用HAL_GPIO_EXTI_Callback()
HAL_GPIO_EXTI_Callback()是个弱函数,我们要自己实现。
  1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){  /* Prevent unused argument(s) compilation warning */  // UNUSED(GPIO_Pin);          // PC.13 is the button, as the exti  if (GPIO_Pin == GPIO_PIN_13) {    HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10); // PF.10 is a LED  }}
复制代码
这时,响应外部中断的代码就完成了,测试好使。
每按下PC.13按键,PF.10的LED灯就翻转。
备注:调试时,如果在官方demo和自己工程之间来回切换调试,需要重新插拔官方板子上的STLINK3的USB口才能重新调试当前工程。
工程实现预览
  1. /* USER CODE BEGIN Header *//**  ******************************************************************************  * @file           : main.c  * @brief          : Main program body  ******************************************************************************  * @attention  *  * [size=5]© Copyright (c) 2020 STMicroelectronics.  * All rights reserved.[/size]
  2.   *  * This software component is licensed by ST under BSD 3-Clause license,  * the "License"; You may not use this file except in compliance with the  * License. You may obtain a copy of the License at:  *                        opensource.org/licenses/BSD-3-Clause  *  ******************************************************************************  *//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#include "main.h"#include "gpio.h"/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/void SystemClock_Config(void);/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 *//* USER CODE END 0 *//**  * @brief  The application entry point.  * @retval int  */int main(void){  /* USER CODE BEGIN 1 */  /* USER CODE END 1 */    /* MCU Configuration--------------------------------------------------------*/  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */  HAL_Init();  /* USER CODE BEGIN Init */  /* USER CODE END Init */  /* Configure the system clock */  SystemClock_Config();  /* USER CODE BEGIN SysInit */  /* USER CODE END SysInit */  /* Initialize all configured peripherals */  MX_GPIO_Init();  /* USER CODE BEGIN 2 */    LED_init();  /* USER CODE END 2 */    /* Infinite loop */  /* USER CODE BEGIN WHILE */  while (1)  {    /* USER CODE END WHILE */    /* USER CODE BEGIN 3 */  }  /* USER CODE END 3 */}/**  * @brief System Clock Configuration  * @retval None  */void SystemClock_Config(void){  RCC_OscInitTypeDef RCC_OscInitStruct = {0};  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};  /** Supply configuration update enable   */  HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);  /** Configure the main internal regulator output voltage   */  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);  while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}  /** Initializes the CPU, AHB and APB busses clocks   */  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;  RCC_OscInitStruct.HSEState = RCC_HSE_ON;  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;  RCC_OscInitStruct.PLL.PLLM = 5;  RCC_OscInitStruct.PLL.PLLN = 192;  RCC_OscInitStruct.PLL.PLLP = 2;  RCC_OscInitStruct.PLL.PLLQ = 2;  RCC_OscInitStruct.PLL.PLLR = 2;  RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;  RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;  RCC_OscInitStruct.PLL.PLLFRACN = 0;  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)  {    Error_Handler();  }  /** Initializes the CPU, AHB and APB busses clocks   */  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2                              |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;  RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;  RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;  RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;  RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;  RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;  RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)  {    Error_Handler();  }  /** Enables the Clock Security System   */  HAL_RCC_EnableCSS();}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//**  * @brief  This function is executed in case of error occurrence.  * @retval None  */void Error_Handler(void){  /* USER CODE BEGIN Error_Handler_Debug */  /* User can add his own implementation to report the HAL error return state */  /* USER CODE END Error_Handler_Debug */}#ifdef  USE_FULL_ASSERT/**  * @brief  Reports the name of the source file and the source line number  *         where the assert_param error has occurred.  * @param  file: pointer to the source file name  * @param  line: assert_param error line source number  * @retval None  */void assert_failed(uint8_t *file, uint32_t line){   /* USER CODE BEGIN 6 */  /* User can add his own implementation to report the file name and line number,     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  /* USER CODE END 6 */}#endif /* USE_FULL_ASSERT *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码
  1. /**  ******************************************************************************  * File Name          : gpio.c  * Description        : This file provides code for the configuration  *                      of all used GPIO pins.  ******************************************************************************  * @attention  *  * [size=5]© Copyright (c) 2020 STMicroelectronics.  * All rights reserved.[/size]
  2.   *  * This software component is licensed by ST under BSD 3-Clause license,  * the "License"; You may not use this file except in compliance with the  * License. You may obtain a copy of the License at:  *                        opensource.org/licenses/BSD-3-Clause  *  ******************************************************************************  *//* Includes ------------------------------------------------------------------*/#include "gpio.h"/* USER CODE BEGIN 0 *//* USER CODE END 0 *//*----------------------------------------------------------------------------*//* Configure GPIO                                                             *//*----------------------------------------------------------------------------*//* USER CODE BEGIN 1 *//* USER CODE END 1 *//** Configure pins     PC15-OSC32_OUT (OSC32_OUT)   ------> RCC_OSC32_OUT     PC14-OSC32_IN (OSC32_IN)   ------> RCC_OSC32_IN     PH1-OSC_OUT (PH1)   ------> RCC_OSC_OUT     PH0-OSC_IN (PH0)   ------> RCC_OSC_IN*/void MX_GPIO_Init(void){  GPIO_InitTypeDef GPIO_InitStruct = {0};  /* GPIO Ports Clock Enable */  __HAL_RCC_GPIOC_CLK_ENABLE();  __HAL_RCC_GPIOH_CLK_ENABLE();  /*Configure GPIO pin : PC13 */  GPIO_InitStruct.Pin = GPIO_PIN_13;  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; // 这里是上升沿/下降沿都可以  GPIO_InitStruct.Pull = GPIO_NOPULL;  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);  /* EXTI interrupt init*/  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 1, 0);  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);}/* USER CODE BEGIN 2 */void LED_init(void){  GPIO_InitTypeDef  gpio_init_structure;    // PF.10 is a LED  __HAL_RCC_GPIOF_CLK_ENABLE(); // enable pin clock first    gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;  gpio_init_structure.Pull = GPIO_PULLUP;  gpio_init_structure.Speed = GPIO_SPEED_FREQ_HIGH;  gpio_init_structure.Pin = GPIO_PIN_10;  HAL_GPIO_Init(GPIOF, &gpio_init_structure);    // set pin default status  HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);}/* USER CODE END 2 *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码
  1. /* USER CODE BEGIN Header *//**  ******************************************************************************  * @file    stm32h7xx_it.c  * @brief   Interrupt Service Routines.  ******************************************************************************  * @attention  *  * [size=5]© Copyright (c) 2020 STMicroelectronics.  * All rights reserved.[/size]
  2.   *  * This software component is licensed by ST under BSD 3-Clause license,  * the "License"; You may not use this file except in compliance with the  * License. You may obtain a copy of the License at:  *                        opensource.org/licenses/BSD-3-Clause  *  ******************************************************************************  *//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#include "main.h"#include "stm32h7xx_it.h"/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN TD *//* USER CODE END TD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD */ /* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*//* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 *//* USER CODE END 0 *//* External variables --------------------------------------------------------*//* USER CODE BEGIN EV *//* USER CODE END EV *//******************************************************************************//*           Cortex Processor Interruption and Exception Handlers          */ /******************************************************************************//**  * @brief This function handles Non maskable interrupt.  */void NMI_Handler(void){  /* USER CODE BEGIN NonMaskableInt_IRQn 0 */  /* USER CODE END NonMaskableInt_IRQn 0 */  HAL_RCC_NMI_IRQHandler();  /* USER CODE BEGIN NonMaskableInt_IRQn 1 */  /* USER CODE END NonMaskableInt_IRQn 1 */}/**  * @brief This function handles Hard fault interrupt.  */void HardFault_Handler(void){  /* USER CODE BEGIN HardFault_IRQn 0 */  /* USER CODE END HardFault_IRQn 0 */  while (1)  {    /* USER CODE BEGIN W1_HardFault_IRQn 0 */    /* USER CODE END W1_HardFault_IRQn 0 */  }}/**  * @brief This function handles Memory management fault.  */void MemManage_Handler(void){  /* USER CODE BEGIN MemoryManagement_IRQn 0 */  /* USER CODE END MemoryManagement_IRQn 0 */  while (1)  {    /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */    /* USER CODE END W1_MemoryManagement_IRQn 0 */  }}/**  * @brief This function handles Pre-fetch fault, memory access fault.  */void BusFault_Handler(void){  /* USER CODE BEGIN BusFault_IRQn 0 */  /* USER CODE END BusFault_IRQn 0 */  while (1)  {    /* USER CODE BEGIN W1_BusFault_IRQn 0 */    /* USER CODE END W1_BusFault_IRQn 0 */  }}/**  * @brief This function handles Undefined instruction or illegal state.  */void UsageFault_Handler(void){  /* USER CODE BEGIN UsageFault_IRQn 0 */  /* USER CODE END UsageFault_IRQn 0 */  while (1)  {    /* USER CODE BEGIN W1_UsageFault_IRQn 0 */    /* USER CODE END W1_UsageFault_IRQn 0 */  }}/**  * @brief This function handles System service call via SWI instruction.  */void SVC_Handler(void){  /* USER CODE BEGIN SVCall_IRQn 0 */  /* USER CODE END SVCall_IRQn 0 */  /* USER CODE BEGIN SVCall_IRQn 1 */  /* USER CODE END SVCall_IRQn 1 */}/**  * @brief This function handles Debug monitor.  */void DebugMon_Handler(void){  /* USER CODE BEGIN DebugMonitor_IRQn 0 */  /* USER CODE END DebugMonitor_IRQn 0 */  /* USER CODE BEGIN DebugMonitor_IRQn 1 */  /* USER CODE END DebugMonitor_IRQn 1 */}/**  * @brief This function handles Pendable request for system service.  */void PendSV_Handler(void){  /* USER CODE BEGIN PendSV_IRQn 0 */  /* USER CODE END PendSV_IRQn 0 */  /* USER CODE BEGIN PendSV_IRQn 1 */  /* USER CODE END PendSV_IRQn 1 */}/**  * @brief This function handles System tick timer.  */void SysTick_Handler(void){  /* USER CODE BEGIN SysTick_IRQn 0 */  /* USER CODE END SysTick_IRQn 0 */  HAL_IncTick();  /* USER CODE BEGIN SysTick_IRQn 1 */  /* USER CODE END SysTick_IRQn 1 */}/******************************************************************************//* STM32H7xx Peripheral Interrupt Handlers                                    *//* Add here the Interrupt Handlers for the used peripherals.                  *//* For the available peripheral interrupt handler names,                      *//* please refer to the startup file (startup_stm32h7xx.s).                    *//******************************************************************************//**  * @brief This function handles EXTI line[15:10] interrupts.  */void EXTI15_10_IRQHandler(void){  /* USER CODE BEGIN EXTI15_10_IRQn 0 */  /* USER CODE END EXTI15_10_IRQn 0 */  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);  /* USER CODE BEGIN EXTI15_10_IRQn 1 */  /* USER CODE END EXTI15_10_IRQn 1 */}/* USER CODE BEGIN 1 */void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){  /* Prevent unused argument(s) compilation warning */  // UNUSED(GPIO_Pin);          // PC.13 is the button, as the exti  if (GPIO_Pin == GPIO_PIN_13) {    HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10); // PF.10 is a LED  }}/* USER CODE END 1 *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码
  1. /* USER CODE BEGIN Header *//**  ******************************************************************************  * File Name          : stm32h7xx_hal_msp.c  * Description        : This file provides code for the MSP Initialization   *                      and de-Initialization codes.  ******************************************************************************  * @attention  *  * [size=5]© Copyright (c) 2020 STMicroelectronics.  * All rights reserved.[/size]
  2.   *  * This software component is licensed by ST under BSD 3-Clause license,  * the "License"; You may not use this file except in compliance with the  * License. You may obtain a copy of the License at:  *                        opensource.org/licenses/BSD-3-Clause  *  ******************************************************************************  *//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#include "main.h"/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN TD *//* USER CODE END TD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN Define */ /* USER CODE END Define *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN Macro *//* USER CODE END Macro *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*//* USER CODE BEGIN PFP *//* USER CODE END PFP *//* External functions --------------------------------------------------------*//* USER CODE BEGIN ExternalFunctions *//* USER CODE END ExternalFunctions *//* USER CODE BEGIN 0 *//* USER CODE END 0 *//**  * Initializes the Global MSP.  */void HAL_MspInit(void){  /* USER CODE BEGIN MspInit 0 */  /* USER CODE END MspInit 0 */  __HAL_RCC_SYSCFG_CLK_ENABLE();  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);  /* System interrupt init*/  /* USER CODE BEGIN MspInit 1 */  /* USER CODE END MspInit 1 */}/* USER CODE BEGIN 1 *//* USER CODE END 1 *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码
  1. /* USER CODE BEGIN Header *//**  ******************************************************************************  * @file           : main.h  * @brief          : Header for main.c file.  *                   This file contains the common defines of the application.  ******************************************************************************  * @attention  *  * [size=5]© Copyright (c) 2020 STMicroelectronics.  * All rights reserved.[/size]
  2.   *  * This software component is licensed by ST under BSD 3-Clause license,  * the "License"; You may not use this file except in compliance with the  * License. You may obtain a copy of the License at:  *                        opensource.org/licenses/BSD-3-Clause  *  ******************************************************************************  *//* USER CODE END Header *//* Define to prevent recursive inclusion -------------------------------------*/#ifndef __MAIN_H#define __MAIN_H#ifdef __cplusplusextern "C" {#endif/* Includes ------------------------------------------------------------------*/#include "stm32h7xx_hal.h"/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Exported types ------------------------------------------------------------*//* USER CODE BEGIN ET *//* USER CODE END ET *//* Exported constants --------------------------------------------------------*//* USER CODE BEGIN EC *//* USER CODE END EC *//* Exported macro ------------------------------------------------------------*//* USER CODE BEGIN EM *//* USER CODE END EM *//* Exported functions prototypes ---------------------------------------------*/void Error_Handler(void);/* USER CODE BEGIN EFP *//* USER CODE END EFP *//* Private defines -----------------------------------------------------------*//* USER CODE BEGIN Private defines *//* USER CODE END Private defines */#ifdef __cplusplus}#endif#endif /* __MAIN_H *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码
  1. /**  ******************************************************************************  * File Name          : gpio.h  * Description        : This file contains all the functions prototypes for   *                      the gpio    ******************************************************************************  * @attention  *  * [size=5]© Copyright (c) 2020 STMicroelectronics.  * All rights reserved.[/size]
  2.   *  * This software component is licensed by ST under BSD 3-Clause license,  * the "License"; You may not use this file except in compliance with the  * License. You may obtain a copy of the License at:  *                        opensource.org/licenses/BSD-3-Clause  *  ******************************************************************************  *//* Define to prevent recursive inclusion -------------------------------------*/#ifndef __gpio_H#define __gpio_H#ifdef __cplusplus extern "C" {#endif/* Includes ------------------------------------------------------------------*/#include "main.h"/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* USER CODE BEGIN Private defines *//* USER CODE END Private defines */void MX_GPIO_Init(void);/* USER CODE BEGIN Prototypes */void LED_init(void);/* USER CODE END Prototypes */#ifdef __cplusplus}#endif#endif /*__ pinoutConfig_H *//**  * @}  *//**  * @}  *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码
总结

通过STM32CubeMx配置硬件参数,生成干净整洁易于维护的框架代码。
参考和迁移官方demo的知识点展示,可以让新手很快上手,将新的MCU编程应用到实际工作当中。
大大降低了时间成本。
                                                                                                                                       
                                                    
  • 点赞                        
  • 收藏                        
  • 分享                                                                                                                        
  •                                                         
                                      
    • 文章举报                           
                                                
                                                                        
                                            
                                                        LostSpeed                                                                发布了437 篇原创文章 · 获赞 126 · 访问量 175万+                                                                                            他的留言板                                                            关注
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




上一篇:rocketmq-4.6.0-发送消息失败No route info of this topic, TopicTest
下一篇:【计算机网络课程设计】2019-智能家居协议设计
回复

使用道具 举报

0

主题

19

帖子

409

积分

中级会员

Rank: 3Rank: 3

积分
409
发表于 2020-2-4 09:43:14 | 显示全部楼层
楼主,大恩不言谢了![www.12360.co]
回复

使用道具 举报

0

主题

15

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
发表于 2020-2-5 14:09:00 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享![www.12360.co]
回复

使用道具 举报

0

主题

7

帖子

157

积分

注册会员

Rank: 2

积分
157
发表于 7 天前 | 显示全部楼层
这个帖子不回对不起自己![www.12360.co]
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-18 06:11 , Processed in 0.097022 second(s), 41 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

快速回复 返回顶部 返回列表