新闻详情

新闻详情

首页 / 资讯中心 / 详情

实验二:标准外设库方式流水灯与Keil仿真

发布时间:2026/9/30 5:50:03来源:尧图网络
实验二:标准外设库方式流水灯与Keil仿真
一、实验目的掌握STM32标准外设库SPL的工程搭建与GPIO库函数用法用标准外设库实现LED轮流闪烁使用Keil软件仿真逻辑分析仪观察GPIO输出波形分析闪烁周期。二、实验硬件元件引脚说明红色LEDPA0高电平亮蓝色LEDPA2高电平亮绿色LEDPB0高电平亮板载LEDPC13低电平亮三、工程项目创建与添加库文件详细过程3.1 新建Keil工程打开Keil μVision5 → Project → New μVision Project选择保存路径命名为Task2_SPL器件选择窗口选STMicroelectronics → STM32F1 Series → STM32F103 → STM32F103C8弹出Manage Run-Time Environment先点Cancel后面手动加库。3.2 目录结构在工程文件夹下建立如下结构Task2_SPL/ ├── Libraries/ │ ├── inc/ 标准外设库头文件 │ │ ├── stm32f10x.h │ │ ├── stm32f10x_gpio.h │ │ ├── stm32f10x_rcc.h │ │ ├── core_cm3.h │ │ ├── system_stm32f10x.h │ │ └── stm32f10x_conf.h │ └── src/ 标准外设库源文件 │ ├── stm32f10x_gpio.c │ ├── stm32f10x_rcc.c │ ├── system_stm32f10x.c │ └── misc.c ├── Startup/ │ └── startup_stm32f10x_md.s 启动文件 ├── User/ │ └── main.c └── Listings/ Objects/ 编译输出3.3 添加源文件到Keil在Keil左侧Project面板右键Source Group 1→ Add Existing Files选择Libraries/src/下的stm32f10x_gpio.cstm32f10x_rcc.csystem_stm32f10x.cmisc.c再把startup_stm32f10x_md.s和User/main.c加进来。3.4 配置头文件路径与宏右键工程 →Options for Target或按AltF7切到C/C选项卡Include Paths点…加入../Libraries/inc ../UserDefine框中填入USE_STDPERIPH_DRIVER, HSE_VALUE8000000切到Debug选项卡选Use Simulator软件仿真点Settings→ 仿真选项卡中Dialog DLL保持默认点OK保存。四、程序代码#includestm32f10x.h/* 软件延时约1ms8MHz主频粗略值 */voidDelay_ms(volatileunsignedintms){unsignedinti,j;for(i0;ims;i)for(j0;j800U;j){;}}intmain(void){GPIO_InitTypeDef GPIO_InitStruct;/* 1. 开GPIOA/B/C和AFIO时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);/* 2. PA0、PA2 推挽输出50MHz */GPIO_InitStruct.GPIO_PinGPIO_Pin_0|GPIO_Pin_2;GPIO_InitStruct.GPIO_ModeGPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStruct);/* 3. PB0 推挽输出50MHz */GPIO_InitStruct.GPIO_PinGPIO_Pin_0;GPIO_Init(GPIOB,GPIO_InitStruct);/* 4. PC13 推挽输出50MHz */GPIO_InitStruct.GPIO_PinGPIO_Pin_13;GPIO_Init(GPIOC,GPIO_InitStruct);/* 5. 初始全灭外接灯写0板载灯写1 */GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_2);GPIO_ResetBits(GPIOB,GPIO_Pin_0);GPIO_SetBits(GPIOC,GPIO_Pin_13);/* 6. 流水循环 */while(1){/* 红灯 PA0 */GPIO_SetBits(GPIOA,GPIO_Pin_0);Delay_ms(1000);GPIO_ResetBits(GPIOA,GPIO_Pin_0);/* 蓝灯 PA2 */GPIO_SetBits(GPIOA,GPIO_Pin_2);Delay_ms(1000);GPIO_ResetBits(GPIOA,GPIO_Pin_2);/* 绿灯 PB0 */GPIO_SetBits(GPIOB,GPIO_Pin_0);Delay_ms(1000);GPIO_ResetBits(GPIOB,GPIO_Pin_0);/* 板载灯 PC13低电平亮 */GPIO_ResetBits(GPIOC,GPIO_Pin_13);Delay_ms(1000);GPIO_SetBits(GPIOC,GPIO_Pin_13);}}五、Keil软件仿真逻辑分析仪观察波形5.1 操作步骤编译通过后按CtrlF5进入Debug仿真菜单View → Analysis Windows → Logic Analyzer在弹出的Logic Analyzer窗口点Setup左上角点New(Insert)依次添加PORTA.0红灯PORTA.2蓝灯PORTB.0绿灯每个信号的Display Type改为Bit点Close然后按F5运行波形绘制出来后用Zoom In/Out调整时间轴。5.2 仿真波形图5.3 波形分析信号引脚高电平时间低电平时间周期红色PA0约1s约3s约4s蓝色PA2约1s约3s约4s绿色PB0约1s约3s约4s三个引脚均为方波高电平宽度约1秒对应每只灯点亮的时间低电平约3秒对应其余3只灯轮流亮的时间三路信号相位依次错开符合流水灯逻辑高低电平转换周期LED闪烁周期实测约为1秒与软件延时目标值基本一致软件循环延时不是精确1秒受编译器优化和指令周期影响若需精确周期应改用SysTick定时器。六、实验总结通过本实验掌握了标准外设库的工程搭建方法学会了用库函数RCC_APB2PeriphClockCmd、GPIO_Init、GPIO_SetBits等快速配置GPIO并使用Keil逻辑分析仪直观观察到了流水灯的输出时序波形验证了代码逻辑的正确性。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

游戏 DLSS 文件如何替换?免费工具 DLSS Swapper 全流程(附 FSR、XeSS 升级与回退) 2026/9/30 6:58:44

游戏 DLSS 文件如何替换?免费工具 DLSS Swapper 全流程(附 FSR、XeSS 升级与回退)

游戏 DLSS 文件如何替换?免费工具 DLSS Swapper 全流程(附 FSR、XeSS 升级与回退) 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 不少游戏的画质设置里明明挂着 DLSS,实…

阅读更多 →
基于SpringBoot的半成品配菜销售管理系统任务书 2026/9/30 6:58:44

基于SpringBoot的半成品配菜销售管理系统任务书

一、课题研究内容随着当代居民生活节奏加快、居家就餐需求提升,半成品配菜凭借便捷高效、无需预处理、荤素搭配齐全的优势,成为家庭日常就餐、懒人简餐、小型聚餐的主流消费品类,半成品配菜行业迎来快速发展期。传统线下半成品配菜销售模式多…

阅读更多 →
Python-100-Days 深入浅出 pandas(六):一文吃透 Index 索引体系与时间索引实战 2026/9/30 6:58:44

Python-100-Days 深入浅出 pandas(六):一文吃透 Index 索引体系与时间索引实战

文档教程 【免费下载链接】Python-100-Days Python - 100天从新手到大师 项目地址: https://gitcode.com/GitHub_Trending/py/Python-100-Days 点击查看 免费下载 导读 Index 是 pandas 中为 Series 与 DataFrame 提供索引服务的核心类型,它支撑起数据…

阅读更多 →
基于SpringBoot的餐厅在线预约系统任务书 2026/9/30 6:58:44

基于SpringBoot的餐厅在线预约系统任务书

一、课题研究内容随着互联网与本地生活服务行业的深度融合,传统线下餐厅到店消费、现场排队订位的经营模式已无法适配当下消费者便捷化、高效化、智能化的用餐需求,同时也制约了餐厅数字化、精细化运营发展。传统餐厅普遍采用人工登记、现场排队、电话预…

阅读更多 →
Java 设计模式:Acyclic Visitor(无环访问者)模式解析与源码实战 —— 基于 java-design-patterns 仓库 acyclic-visitor 模块 2026/9/30 6:58:43

Java 设计模式:Acyclic Visitor(无环访问者)模式解析与源码实战 —— 基于 java-design-patterns 仓库 acyclic-visitor 模块

示例工程教程 【免费下载链接】java-design-patterns Design patterns implemented in Java 项目地址: https://gitcode.com/GitHub_Trending/ja/java-design-patterns 点击查看 免费下载 Acyclic Visitor(无环访问者)是一种行为型设计模式&…

阅读更多 →
wiliwili:把B站装进Switch手柄的完整指南 2026/9/30 6:58:37

wiliwili:把B站装进Switch手柄的完整指南

wiliwili:把B站装进Switch手柄的完整指南 【免费下载链接】wiliwili 第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwili 高铁上想刷几集追的番&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉