1 基础准备
1.1 硬件准备
首先,我们需要用四根杜邦线完成开发板与下载器的连接。
连接方式:DAPLINK上的3V3、SWD、SCK、GND,分别通过杜邦线与开发板上的VCC、SWDIO、SWCLK、GND相连。
对于驱动问题,若是使用Win10、Win11系统,则无需安装驱动,即插即用。在数据线插上电脑USB接口后,可从电脑设备管理器找到。
1.2 软件准备
打开STM32CubeMX,打开MCU SELECTOR,搜索并选中芯片STM32F407VET6:
时钟源配置(时钟树配置参看文章开头的两篇博客):
GPIO引脚配置:
① 初始化输出电平。输出为低电平时LED灯会亮;
② 输出的模式(推挽、开漏输出)。这里使用默认的推挽输出即可;
③ 是否上下拉引脚(上拉,下拉)。这里使用默认;
④ 引脚速度(低,中,高速)。流水灯对引脚速度没有特殊要求,低速即可;
⑤ 用户标签。在初始化完成后,对应的引脚和端口会有对应的宏定义在main.h中生成。
上述设置完成后,在STM32CubeMX自动生成代码后,可在gpio.c文件下查看到:
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, LED2_Pin|LED3_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : PAPin PAPin */
GPIO_InitStruct.Pin = LED2_Pin|LED3_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
下载模式配置:DAPLINK选Serial Wire(如果不进行配置进行一次下载后,再一次下程序可能就下不进去)。
项目管理配置以及代码生成:
在进行大型项目编写时,常常要求模块化编程,以及对文件大小有所约束,一般情况下,选择以上两个选项(指Copy only the necessary librariy files 和 Generate peripheral initialization as pair of '.c/.h' files per peripheral)可以大大的优化编程。在代码量和代码可读性上有所优化。 (本段话来自博客:【三】零基础上手HAL库之—GPIO点灯_PlayCodes的博客-CSDN博客_hal_gpio_togglepin)
都配置好后,点击右上角:
2 在MDK中编写、编译、下载代码
2.1 基础配置
STM32CubeMX生成的代码目录如下:
首先对keil进行配置:
点击Settings进入:
点击Settings进入(非常重要的一个):
2.2 代码编写
首先由main.h文件可知:
#define LED2_Pin GPIO_PIN_6
#define LED2_GPIO_Port GPIOA
#define LED3_Pin GPIO_PIN_7
#define LED3_GPIO_Port GPIOA
所以可如下编写引脚:
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(200);
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
}
如果在STM32CubeMX的GPIO里面user label那边没有定义的话,那就写(GPIOA,GPIO_PIN_7);如果在里面定义成LED2的话,则还可以写成( LED2_GPIO_Port, LED2_Pin)。
HAL_GPIO_TogglePin:
【用于翻转某个GPIO引脚的电平状态。如果为0则变为1;如果为1则变为0】
/**
* @brief 翻转引脚电平
* @param GPIOx
* @param GPIO_Pin
* @retval None
*/
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
【过于GPIO相关函数解的析(HAL库)可参考博客:GPIO相关函数解析(HAL库)_冬瓜~的博客-CSDN博客_gpiopinstate类型的值】
进行编译后下载:
点灯成功!!!
上一篇:【STM32】2—按键控制
下一篇:stm32驱动TB6600控制42/57步进电机的案例(TIM中断和PWM实验)
推荐阅读最新更新时间:2024-11-12 06:46