2023年6月30日
STM32 HAL库 BSP 开发过程;
学习了GPIO输入、输出;
jlink下载显示:
No Cortex-M Device found in JTAG chain
Please check the JTAG cable and the connected devices.
解决办法:Linker-settings-Port 改成SW,Max Clock 降低。
bsp_led.c
#include ".\bsp_led.h" //这里包含头文件的时需要特别注意路径
//初始化LED的GPIO引脚函数实现
void LED_GPIO_Init(void)
{
GPIO_InitTypeDef LED_GPIO_Init;//初始化结构体 实例
__HAL_RCC_GPIOC_CLK_ENABLE(); //1.初始化时钟
LED_GPIO_Init.Mode = GPIO_MODE_OUTPUT_PP; //2.配置GPIO的各项属性
LED_GPIO_Init.Pin = GPIO_PIN_5; //配置引脚PB5(不同引脚用PB5|PB6)用与
LED_GPIO_Init.Pull = GPIO_NOPULL;
LED_GPIO_Init.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &LED_GPIO_Init); //3.对GPIO进行初始化 LED_GPIO_Init为指针变量用地址符
}
bsp_led.h
#ifndef __BSP_LED_H__
#define __BSP_LED_H__
#include "stm32f1xx.h"
//初始化LED的GPIO引脚
void LED_GPIO_Init(void);
//使用宏定义来调用GPIO的函数
#define LED_ON do{HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);} while(0)
#define LED_OFF do{HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);} while(0)
#define LED_TOGGLE do{HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);} while(0)
//#define LED_GREEN_ON do{HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);} while(0)
//#define LED_GREEN_OFF do{HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET);} while(0)
//#define LED_GREEN_TOGGLE do{HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_5);} while(0)
#endif
先将代码保存为.c和.h的格式,然后新建分组,添加路径。
这里修改名字
这里添加.c和.h文件
最下面那个是保存路径
#include ".\bsp_led.h"
头文件添加看是否能正常跳转
#ifndef __BSP_LED_H__
#define __BSP_LED_H__
#endif
这个是预定义
要在main.c文件里添加头文件
#include ".\bsp_led.h"