基于标准外设库的LED流水灯

一、实验要求

在之前实验的基础上,改用标准外设库方式使用某个端口GPIOx端口管脚控制几个LED灯,轮流闪烁,间隔时长1秒。

(1)写出工程项目创建文件夹、添加STM32标准外设库文件(*.c,*.h)的详细过程;

(2)LED灯的亮/灭周期是通过软件循环延时完成的,其准确周期大致是多少呢? 

  在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察GPIO端口的输出波形,并分析时序状态正确与否、高低电平转换周期(LED闪烁周期)实际为多少。

二、实验步骤

1.下载STM32官方固件库(标准固件库)

1.1标准外设库简介

标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器,是针对某一系列芯片而言的,没有可移植性。标准外设库由程序、数据结构和宏组成,覆盖了微控制器所有外设的性能特征,为开发者访问底层硬件提供了一个中间API。它实现了各外设的基本操作接口,将一些基本的寄存器操作封装成了C函数,使得开发者无需深入掌握底层硬件细节,就可以轻松应用每一个外设。

1.2标准外设库下载

STM32标准外设库官方下载地址: 

STM32标准外设软件库 - 意法半导体STMicroelectronics

 实验使用STM32F103C8单片机,选择F1

 在邮箱邮件中点击下载

1.3标准外设库文件介绍

 (1)_htmres:

官方Logo图片

 (2)Libraries:

这两个文件夹都是STM32F1标准外设库中的重要组成部分,它们对外提供了一套简单统一的API,使用这套API可以方便地操作STM32F1系列微控制器的各个外设。

CMSIS(ARM Cortex Microcontroller Software Interface Standard)是一个通用的规范,它定义了CMSIS兼容的设备驱动程序的接口。在STM32F1系列微控制器的标准外设库中,CMSIS文件夹包含了符合CMSIS规范的特定于芯片的外设访问层代码、DSP软件库、RTOS API以及芯片上外设访问层代码等。

STM32F10xx_StdPeriph_Driver是STM32F1标准外设固件库的源码文件和对应的头文件。这个文件夹包含STM32F1xx标准外设固件库源码文件(.c文件)和对应的头文件(.h文件),其中inc目录下的stm32f1xx_ppp.h是头文件,src目录下面的stm32f1xx_ppp.c是源码文件。每一个.c文件和一个相应的.h文件对应。

 (3)Project:

通过对这两个示例文件的学习,能帮助使用STM32CubeMX软件和STM32F1系列微控制器时,快速创建和配置工程,并实现各种外设模块的功能。

STM32F1xx_StdPeriph_Examples包含了基于STM32CubeMX软件生成的初始化代码,以示例的形式提供了很多外设模块的运用,比如GPIO、USART、SPI等等。

STM32F1xx_StdPeriph_Template是利用STM32CubeMX软件创建新工程时的模板文件夹。其中包含了基于IAR或Keil的工程模板,这些模板中已经配置好了与STM32CubeMX相关的选项,可以直接使用。除此之外,这个文件夹中还包含了用于配置STM32CubeMX选项的配置文件,以及用于生成初始化代码的脚本文件。

 (4)Utilities:

包含官方评估板源码文件STM32_EVAL

 (5)Package_license.html:

STM32F10x标准外设库软件许可协议


 

 (6)Package_license.md:
同上

 (7)Release_Notes.html:
STM32F10x标准外设库的发行说明

 (8)stm32f10x_stdperiph_lib_um.chm:

STM32F10x 标准外设库的帮助文件

1.4标准库的使用

在实验中我们主要使用CMSIS子目录CM3以及STM32F10x_StdPeriph_Driver子目录 inc src

重点头文件介绍
(1)stm32f10x.h

 包含主要的宏定义以及结构体定义

(2)system_stm32f10x.c和system_stm32f10x.h

 系统初始化(含有时钟配置)

2.Keil5工程文件创建

2.1创建工程

(1)新建文件夹LED1,并创建子目录CMSIS、MDK、USER、STDLIB

(2)将所需标准库文件进行复制粘贴

CMSIS文件:

STDLIB文件:

USER文件:

(3)点击 Project → New uVision Project …

(4)选择在LED1文件夹下的MDK文件夹并命名为bigLED

(5)选择STM32F103C8芯片

(6)本实验在添加库文件窗口无需操作,取消即可

(7)右键Target 1,选择Manage Project Items

(8)在Manage Project Ltems中创建并添加USER、CMSIS、STDLIB的组(Groups)

 (9)在所属组下添加文件


2.2修改目标设置

(1)点击魔术棒

(2)在C/C++中添加Define(标准库没有对宏定义的声明);在IncludePaths中选择文件路径

(3)文件路径添加如下

(4)注意事项
包含多个sartup——stm32f10x_xx.x的启动文件可能使程序报错 

本实验使用中等容量的starup_stm32f10x_md.s作为启动文件

 使用ARM Compiler为V5.06

2.3代码编写 

(1)将主程序改为空循环并编译:

 编译通过

(2) 主程序
#include "stm32f10x.h"                  // Device header
void Delay_ms(u32 i)
 {
     u32 temp;
	 SysTick->LOAD=9000*i;      //设置重装数值, 72MHZ时
     SysTick->CTRL=0X01;        //使能,减到零是无动作,采用外部时钟源
    SysTick->VAL=0;            //清零计数器
     do
   {
        temp=SysTick->CTRL;       //读取当前倒计数值
    }
    while((temp&0x01)&&(!(temp&(1<<16))));    //等待时间到达
     SysTick->CTRL=0;    //关闭计数器
    SysTick->VAL=0;        //清空计数器
}
int main(void)
{
		GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	while (1)
	{
		GPIO_Write(GPIOA, ~0x0001);	//0000 0000 0000 0001
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0002);	//0000 0000 0000 0010
		Delay_ms(1000);
	}
}

 3.实况 

3.1接线

3.2烧录

3.3实况视频

流水灯

4.利用KEIL的软件仿真的逻辑分析仪功能观察GPIO的波形

4.1环境配置

4.2仿真

(1)点击Start/Stop Debug Session

(2)选择逻辑观察仪和引脚

 

(3)运行

三、回答

LED灯的亮/灭周期主要由软件循环延时和硬件时钟频率共同决定 。

LED灯的亮/灭周期大致为:

循环延时(ms) / 硬件时钟频率(Hz) 

xiaosorry
关注 关注
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GPIO的使用
YuanWent
02-10 1301
STM32F103x单片机GPIO的使用,基于标准开发,实例有点亮LED、蜂鸣器实验、按键控制实验。
51单片机实例7——8段led循环显示0-9
m0_63445811的博客
07-19 4223
51单片机实例7——8段led循环显示0-9
51单片机编程应用(C语言):LED
weixin_64484421的博客
01-29 7365
51单片机实现LED点亮,闪烁,流水灯
基于寄存器&标准外设LED流水灯
lxr0106的博客
10-14 395
需要的功能有:① 点亮与熄灭流水灯–实验的首要功能② 计时器–用于以时间控制led效果。
基于寄存器&标准外设LED流水灯实验
weixin_62901798的博客
10-16 303
(2)然后回到固件Libraries->CMSIS->CM3->DeviceSupport->ST->STM32F10x中,找到一个.h文件和两个system开头的文件,它们分别为STM32的外设寄存器描述文件和配置时钟文件,将它们三个也复制到start下。(1)找到刚刚解压好的固件,点击Libraries->CMSIS->CM3->DeviceSupport->ST->STM32F10x->setup->arm,这些为STM32的启动文件,全选启动文件并复制到start。
基于标准外设的stm32led流水灯
qq_64120195的博客
10-16 109
2.stm32固件可以在https://www.st.com/zh/embedded-software/stm32-standard-peripheral-libraries.html上注册一个账号下载。3.介于我的单片机版本为STM32F103C8T6故点击F1下载。3.在下载解压后可以看见一个包含很多文件的文件夹。
基于标准外设LED流水灯
qq_65299693的博客
10-16 60
1.打开keil,新建工程,选择STM32F103C8芯片创建以下四个分组在define中输入以下。
RGBLED文件
05-14
适用于arduino的各个版本,已经优化完成,解压到libraries文件夹即可
基于STM32F103的led流水灯例程
05-28
在本文中,我们将深入探讨如何基于STM32F103微控制器实现LED流水灯的程序设计。STM32F103R8T6是一款常见的高性能、低成本、基于ARM Cortex-M3内核的微控制器,广泛应用于各种嵌入式系统,包括LED控制等简单而实用的...
基于STC15系列流水灯例程
04-19
通过这个基于STC15系列流水灯例程,开发者不仅可以学习到单片机基本的GPIO控制、定时器应用,还能了解到中断服务、循环控制等编程概念。这为后续更复杂的嵌入式系统设计打下坚实的基础。在STC15_LEDFLOW压缩包中...
STM32F103 LED流水灯_STM32F103LED流水灯_
10-03
在这个项目中,我们将深入探讨如何利用STM32F103来实现LED流水灯效果。 LED流水灯是一种常见的嵌入式系统实验和电子项目,它通过控制一系列LED的亮灭顺序,呈现出连续流动的视觉效果。在STM32F103上实现这一功能...
实验三:LED流水灯.zip_H75_LED流水灯
09-23
【标题】"实验三:LED流水灯.zip_H75_LED流水灯" 提供了一个关于51单片机的实验项目,旨在使用汇编语言实现LED流水灯的效果。LED流水灯是一种常见的电子工程教学实例,它通过控制LED的顺序亮灭,形成一种流动的...
基于STM32标准函数的LED流水灯实验
Constellation_zZ的博客
10-11 2567
我们首先打开keil MDK,点击“NEW PROJECT"命名好工程名字,文件路径。(建议工程名字使用英语)。完成后,选择STM32F103C8T6。随后弹出来的这个界面不用管,直接取消掉。这个是用它自带的library添加所需函数。但是我试了很多次发现文件总是缺少一些,所以就自己手动添加了。与寄存器编程方式相比, 函数更加具有逻辑性与模块性。
基于单片机的搬运机器人控制系统
weixin_45905610的博客
10-17 1028
搬运机器人(transfer robot)是可以进行自动化搬运作业的工业机器人。搬运机器人可以通过C 语言编程实现单片机上控制,通过实验和调试,实行机器人的抓放料,也可以实现自己的自行运行。
什么是单片机
laisen2023的博客
10-14 940
单片机展开到这一阶段,表明单片机已成为工业控制领域中广泛选用的智能化控制东西-----小到玩具、家电行业,大到车载、舰船电子系统,广泛计量测验、工业进程控制、机械电子、金融电子、商用电子、作业自动化、工业机器人、军事和航空航天等领域。为满足不同的要求,呈现了高速、大寻址规划、强运算才干和多机通讯才干的8位、16位、32位通用型单片机,小型廉价型、外围系统集成的专用型单片机,以及形形色色各具特征的现代单片机。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机
嵌入式硬件设计:技术与实践
最新发布
qq_20245171的博客
10-23 257
嵌入式系统是一种针对特定功能的专用计算系统,通常嵌入在更大的设备中,承担控制、监测或处理的任务。特定性:嵌入式系统通常针对特定应用设计,如家用电器、汽车控制系统等,要求设计高度优化以满足性能、功耗、成本等需求。实时性:许多嵌入式系统需要实时响应外部事件,因此设计时要考虑响应速度和时间确定性。资源有限:与桌面计算机不同,嵌入式系统常常受到内存、处理能力、电源等资源的限制,需要有效管理资源以提高效率。可靠性与稳定性:嵌入式系统经常在关键场合运行,如医疗设备或航天器系统,因此设计中必须保证高可靠性和稳定性。
写文章

热门文章

  • STM32/51单片机编程入门(点亮LED) 357
  • 嵌入式Linux开发基础 306
  • 基于标准外设库的LED流水灯 277
  • 汉字点阵与OLED屏显 253
  • 定时器&PWM应用编程 210

最新评论

  • STM32/51单片机编程入门(点亮LED)

    CSDN-Ada助手: 这是一篇很棒的博文!寄存器和GPIO的详细解释让我对单片机编程有了更深入的理解。希望你可以继续分享更多关于单片机编程的知识,特别是关于中断控制、定时器和PWM等方面的内容。这些知识对于掌握单片机编程是非常重要的。加油! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2

  • 实验1: STM32F103的流水灯点亮版本1(寄存器地址操作)

    CSDN-Ada助手: 恭喜您写完了第三篇博客!标题看起来很吸引人,我也很期待阅读您的实验内容。不过在评论之前,我想说您的创作热情真是令人钦佩!不断探索和分享是提升自己的好途径,希望您能继续保持创作的劲头。 对于下一步的创作建议,如果可能的话,我建议您可以尝试更多不同的硬件操作,或是深入探索某个具体的主题。或许您可以考虑加入更多的实验细节和代码解析,这样读者能更好地理解您的思路和实现过程。当然,这只是一个建议,希望能给您一些启发。期待您未来更多精彩的博客! CSDN 正在通过评论红包奖励优秀博客,请看红包流:https://bbs.csdn.net/?type=4&header=0&utm_source=csdn_ai_ada_blog_reply3

  • GCC背后的故事&C程序常量变量的地址分配

    CSDN-Ada助手: 非常感谢作者的辛勤努力和持续创作。标题中的主题“GCC背后的故事&C程序常量变量的地址分配”听起来非常有趣和有深度。作者对GCC背后的故事进行探索,以及对C程序常量变量的地址分配进行解释,无疑会给读者带来新的认识和启发。在下一步的创作中,建议作者可以进一步深入探索GCC的工作原理,以及更加详细地解析C程序中常量变量的地址分配方式。期待作者继续分享关于编程的精彩故事和知识,谢谢! 如何快速涨粉,请看该博主的分享:https://hope-wisdom.blog.csdn.net/article/details/130544967?utm_source=csdn_ai_ada_blog_reply5

  • 嵌入式RTOS多任务程序设计

    CSDN-Ada助手: 非常恭喜您撰写了第13篇博客!标题“嵌入式RTOS多任务程序设计”听起来非常有深度和实用性。我非常欣赏您的持续创作精神和对嵌入式系统的热爱。不过,如果我可以提一个谦虚的建议,我认为下一步您可以考虑分享一些实际案例或者深入分析一些常见的问题和解决方案。这样可以帮助读者更好地理解和应用您所介绍的嵌入式RTOS多任务程序设计。再次恭喜!期待您的下一篇博客!

  • 定时器&PWM应用编程

    CSDN-Ada助手: 恭喜您撰写了第9篇博客!标题中的“定时器&PWM应用编程”听起来非常有趣和实用。您的坚持和持续创作令人钦佩。在下一步的创作中,如果可能的话,您可以尝试分享一些实际应用的案例或者深入解析一些高级技术细节,这将进一步丰富和拓展您的博客内容。期待您的下一篇博客!

大家在看

  • Cmd终端详解
  • css知识点梳理
  • Restrict the Modification of Grid Data
  • 大话哈希冲突 950
  • next的路由无法获取请求的body? 2

最新文章

  • 嵌入式RTOS多任务程序设计
  • 数字温度计
  • 汉字点阵与OLED屏显
2023年13篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家杭州玻璃钢雕塑摆件生产佛山仿铜玻璃钢雕塑云浮玻璃钢动物雕塑手工制作玻璃钢人物雕塑商场企划美陈的工作职责伊犁气球商场美陈哪家靠谱玻璃钢雕塑有名品牌重庆动物玻璃钢雕塑定做价格商场美陈中秋节河南大型商场美陈批发石家庄市政玻璃钢雕塑畅销全国上海户外商场美陈销售厂家广西玻璃钢人物雕塑定制卡通熊出没玻璃钢雕塑摆件上海大型商场美陈生产企业重庆玻璃钢商场美陈湖州玻璃钢陶瓷雕塑尺寸西安玻璃钢雕塑小品批发台州形象玻璃钢雕塑菏泽景观玻璃钢卡通雕塑悬空玻璃钢雕塑农安玻璃钢雕塑工程电话铁岭小区玻璃钢雕塑湖北景观玻璃钢雕塑鸟玻璃钢雕塑福建商场玻璃钢花盆广东玻璃钢卡通雕塑大量制作人物玻璃钢雕塑哪家买黄山个性化玻璃钢雕塑销售厂家株洲玻璃钢果蔬雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化