【STM32F401CCUx单片机】LED灯光闪烁项目详解
1、材料准备
①STM32F401CCU6核心板
②仿真器 J-OB V2
材料准备完成后将完成连线,按照如下表格尽心连线。
STM32F401CCU6 | J-OB V2 |
GND | GND |
SWSCK | CLK |
SWDIO | SWD |
3V3 | 3.3V |
2、软件准备
①KeilMDK 5.8
②STM32CubeMX 6.8
3、创建工程
①、在STM32CubeMX中选择“ACCESS TO MCU SELECTOR”,选择STM32F401CCU6核心板。
②、在我的核心板中LED灯对应的引脚为PC13,所以在Pinout view中选择右键PC13的引脚并设定为GPIO_Output。在SYS中选择 Series Wire 启用 Serial Wire Debug (SWD) 和 Serial Wire Viewer (SWV) 功能,提高开发效率。
而后在GPIO界面对PC13进行设置,由上到下分别为引脚初始化后电平高低、选择GPIO的推挽模式或者开漏模式、选择内部上下拉还是不上下拉、引脚的速度。
其中:
由于我的目的是使LED灯闪烁,所以选择推挽模式和内部不上下拉即可。
最后在Project Manager中将“Generate peripheral initialization as a pair of'.c/h' fles per peripheral”勾选,将代码进行模块化,方便拓展和管理。最后生成代码即可。
4、烧录代码
①找到stm32f4xx_hal_gpio.c,在其中可以找到对应的代码例如
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
其中GPIOx表示目标GPIO端口的基地址,将x替换为A,B,C中的一个表示要操作的基地址。GPIO_Pin用来指定端口引脚号。PinState为GPIO引脚状态是GPIO_PIN_SET(高电平)或GPIO_PIN_RESET(低电平)的一个值。
如果需要让LED灯闪烁,我们可以这样写。高低电平的变换时延为400MS。
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_11, GPIO_PIN_SET);
HAL_Delay(400);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_11, GPIO_PIN_RESET);
HAL_Delay(400);
同时,还有更加简便的代码直接实现PC13引脚的电平变换:
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
HAL_Delay(400);
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
②打开设置(option for target…)→Debug,将ST-Link替换为J-Link(个人使用的驱动为J-Link)。直接利用快捷键Ctrl+F7(编译)、F7(构建)、F8(下载)完成烧录步骤。 最后即可在核心板上的LED灯看到闪烁。
作者:。)#)))266