【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的推挽模式或者开漏模式、选择内部上下拉还是不上下拉、引脚的速度。 

其中:

  • 推挽模式:GPIO能够主动输出高电平和低电平,适合需要驱动负载的场合。
  • 开漏模式:GPIO只能输出低电平或处于高阻态,通常需要外部上拉电阻来输出高电平,适合多个设备共享信号线的场合。
  • 内部上拉:将GPIO引脚默认拉到高电平,适用于需要引脚默认高电平的情况。
  • 内部下拉:将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

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【STM32F401CCUx单片机】LED灯光闪烁项目详解

    发表回复