STM32 GPIO输出控制LED闪烁实验Keil软件仿真无硬件开发板实验任务配置4路GPIO引脚循环翻转引脚电平实现4路LED周期性闪烁基于Keil MDK软件仿真完成验证不需要实物开发板。一、实验目的掌握STM32通用GPIO口的初始化配置方法理解推挽输出模式。熟悉Keil MDK工程搭建、代码编译、软件仿真调试流程。理解GPIO输出电平翻转原理观察引脚电平周期性变化LED闪烁。学会使用Keil调试工具验证程序运行逻辑。二、实验环境开发软件Keil MDK-ARMμVision5芯片型号STM32F103C8T6仿真方式Keil软件仿真不需要实物开发板实验功能PA0、PB0、PC0、PC13四路GPIO输出循环翻转电平控制LED闪烁三、实验原理STM32的GPIO可以配置为推挽输出模式向ODR寄存器写入0/1控制引脚输出低电平/高电平。在主循环中不断翻转引脚电平配合延时函数引脚电平周期性高低切换。硬件上LED串联电阻接引脚电平变化即可实现LED亮灭交替。本次采用Keil软件仿真在电脑内部模拟芯片运行直接验证代码逻辑不用实物电路板。引脚分配PA0 → LED1PB0 → LED2PC0 → LED3PC13 → LED4四、核心代码#includestm32f10x.hvoidDelay_ms(uint32_tms){uint32_ti,j;for(i0;ims;i)for(j0;j7200;j);}voidLED_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStruct.GPIO_PinGPIO_Pin_0;GPIO_InitStruct.GPIO_ModeGPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStruct);GPIO_InitStruct.GPIO_PinGPIO_Pin_0;GPIO_Init(GPIOB,GPIO_InitStruct);GPIO_InitStruct.GPIO_PinGPIO_Pin_0;GPIO_Init(GPIOC,GPIO_InitStruct);GPIO_InitStruct.GPIO_PinGPIO_Pin_13;GPIO_Init(GPIOC,GPIO_InitStruct);GPIO_ResetBits(GPIOA,GPIO_Pin_0);GPIO_ResetBits(GPIOB,GPIO_Pin_0);GPIO_ResetBits(GPIOC,GPIO_Pin_0);GPIO_ResetBits(GPIOC,GPIO_Pin_13);}intmain(void){LED_GPIO_Init();while(1){GPIO_SetBits(GPIOA,GPIO_Pin_0);Delay_ms(1000);GPIO_ResetBits(GPIOA,GPIO_Pin_0);GPIO_SetBits(GPIOB,GPIO_Pin_0);Delay_ms(1000);GPIO_ResetBits(GPIOB,GPIO_Pin_0);GPIO_SetBits(GPIOC,GPIO_Pin_0);Delay_ms(1000);GPIO_ResetBits(GPIOC,GPIO_Pin_0);GPIO_SetBits(GPIOC,GPIO_Pin_13);Delay_ms(1000);GPIO_ResetBits(GPIOC,GPIO_Pin_13);}}五、实验步骤新建Keil工程选择芯片STM32F103C8T6添加启动文件、库文件。新建.c源文件粘贴上述代码保存并添加到工程。点击编译检查输出窗口确认0 Errors0 Warnings。打开魔术棒Options for Target切换到Debug选项卡选择Use Simulator勾选Run to main()保存配置。点击Debug调试按钮进入仿真模式程序自动停在main函数入口。点击Run全速运行程序进入while循环持续翻转4路GPIO输出电平。说明本次Keil MDK新版本软件仿真存在逻辑分析仪读取GPIO寄存器信号bug无法直接抓取波形但程序编译无报错、仿真正常运行代码逻辑正确。四路引脚电平周期性翻转对应4个LED同步闪烁。六、实验结果代码编译成功无错误无警告。进入软件仿真程序正常在main循环持续运行不断翻转PA0、PB0、PC0、PC13输出电平。程序逻辑每500ms翻转一次全部引脚电平四路LED同步亮灭交替。仿真结论GPIO初始化配置正确电平翻转功能实现达到LED闪烁实验预期效果。七、实验总结与问题分析本次实验完成STM32 GPIO推挽输出配置实现多路LED闪烁控制。实验踩坑新版Keil MDK软件仿真逻辑分析仪存在寄存器识别bug添加GPIO引脚信号提示Unknown Signal无法采集实时波形但代码本身逻辑没问题仿真运行正常。软件仿真的优势不需要硬件开发板快速验证代码功能缺点部分外设寄存器仿真存在兼容性问题和真实硬件运行环境存在细微差异。
阅读完成 · 觉得有帮助?