1. 点亮LED并测量GPIO输出波形
任务说明
本案例要求使用MCU的GPIO引脚驱动LED,并通过逻辑分析仪或示波器测量该引脚的输出波形,验证GPIO配置与延时函数的准确性。你需要完成:GPIO初始化、LED点亮/熄灭控制、延时函数实现,以及波形测量点的明确标注。
硬件连接
- MCU:STM32F103C8T6(Blue Pill)
- LED正极通过220Ω限流电阻连接至PA5
- LED负极连接至GND
- 逻辑分析仪探头连接至PA5与GND
代码实现
#include "stm32f1xx_hal.h"
void delay_ms(uint32_t ms) {
for (uint32_t i = 0; i < ms * 8000; i++) {
__NOP();
}
}
int main(void) {
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
while (1) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // LED亮
delay_ms(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // LED灭
delay_ms(500);
}
}
波形测量与验证
将逻辑分析仪采样率设置为1MHz以上,通道连接PA5。上电后应观察到周期为1s的方波:高电平持续500ms(LED亮),低电平持续500ms(LED灭)。若使用示波器,可测量高电平电压应为3.3V左右。
验证方法
- 编译并烧录代码至STM32F103C8T6,确认LED以约1Hz频率闪烁。
- 逻辑分析仪连接PA5,观察波形是否为方波,高电平时间是否为500ms±50ms。
- 若波形周期偏差超过±10%,检查延时函数中的循环次数(当前值基于8MHz内部时钟估算,实际频率可能不同)。
- 判定标准:LED肉眼可见规律闪烁,且测量波形周期在0.9s~1.1s范围内即通过。
注意:延时函数基于软件循环实现,精度受编译器优化等级和系统时钟影响。若需精确延时,建议使用定时器(如HAL_Delay()),但本案例为演示GPIO波形测量,软件延时已足够验证逻辑分析仪的使用方法。