外观
二、LED灯闪烁
1 电路分析
在桌面温湿度仪上,有两个测试LED灯,一个接入单片机-PB7引脚用于测试GPIO输出功能;另外一个接入74HC595用于测试移位寄存器输出功能;
本次实验通过使LED4闪烁来测试单片机GPIO输出功能是否正常以及延时函数是否正常。
注
在LED灯的左侧是3V电源加入4.7K限流电阻,若此时GPIO输出高电平(3V),两端没有电势差LED不不点亮,若输出低电平,两端存在电势差,LED灯点亮,通过间接输出高电平与低电平来实现LED闪烁功能。
2 代码编写
2.1 创建工程
打开STM32CubeMx软件
2.2 设置参数
根据上方原理图,设置晶振引脚,下载引脚以及LED测试引脚的参数;
对于LED引脚,需要配置为推挽输出模式,没有使用上下拉,且一开始就输出低电平,这样方便测试LED灯是否正常工作;
配置时钟树,这里主晶振没有使用外部而是内部晶振,外部低速晶振暂时没有使用,先不需要配置;
最后填写输出工程的名称,选择工程输出路径以及适配的IDE;
生成相关文件的.c与.h文件;
选择HAL库;
创建工程,随后打开,这个Cubemx软件就可以关闭了;
2.3 编译配置工程
正常应该是0错误0警告;
点击魔术棒,选择debug,选择合适的下载器,并配置下载器选项;
2.4 编写测试代码
C
/* USER CODE BEGIN 2 */
/*
函数内容:打开LED
函数参数:无
返回值:无
*/
void Open_Led(void)
{
//输出低电平
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET);
}
/*
函数内容:关闭LED
函数参数:无
返回值:无
*/
void Close_Led(void)
{
//输出高电平
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET);
}
/*
函数内容:翻转LED
函数参数:无
返回值:无
*/
void Toggle_LED(void)
{
//翻转电平
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_7);
}
/* USER CODE END 2 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
C
/* USER CODE BEGIN Prototypes */
void Open_Led(void);
void Close_Led(void);
void Toggle_LED(void);
/* USER CODE END Prototypes */
1
2
3
4
5
2
3
4
5
c
/**
* @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 */
HAL_DeInit();
/* 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 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
Toggle_LED();
HAL_Delay(500);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43