版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1LED单灯闪烁之软件延时能力目标:
理解单片机GPIO两种主要的输出类型,初步掌握使用STM32CubeIDE开发单片机应用程序的方法,掌握通过ISP下载程序并通过实物验证的方法。任务要求:电路如图所示,要求通过单片机PC0引脚控制LED0以1秒周期闪烁。3.1.1STM32的GPIO及其输出类型STM32F103R6具有51个GPIO(General-purposeinput/output,通用输入输出)引脚,每个引脚都具备如图所示结构。GPIO的八种工作模式:
本次课着重讲其中的⑴⑵两种工作模式。⑴推挽输出⑵开漏输出⑶复用推挽输出⑷复用开漏输出⑸模拟量输入⑹浮空输入⑺下拉输入⑻上拉输入⑴推挽输出
此时P-MOS管与N-MOS管发挥作用:
①当控制输出1时,P-MOS管闭合、N-MOS管断开,引脚输出电源电压(+3.3V);
②当控制输出0时,P-MOS管断开、N-MOS管闭合,引脚输出GND。
推挽输出模式一般应用在输出电平为0和+3.3V而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。
值得注意的是,当引脚直接接地的时候,切不可推挽输出高电平,否则电源将被直接短路!⑵开漏输出此时P-MOS管始终断开,仅N-MOS管发挥作用:
①当控制输出1时,N-MOS管断开,引脚悬空;
②当控制输出0时,N-MOS管闭合,引脚输出GND。
开漏输出一般应用在①I2C、SMBUS通讯等需要“线与”功能的总线电路中。除此之外,②还用在电平不匹配的场合,如需要输出5伏的高电平,就可以在外部接一个上拉电阻,上拉电源为5V,并且把引脚设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V电平,如右图所示。3.1.2STM32CubeIDE的使用STM32CubeMX的作用是通过图形化配置完成STM32的工程目录的建立与初始化代码的生成。下面是操作步骤。
(1)在桌面上找到并双击程序图标,打开程序主界面。
(2)点击菜单“File=>NewProject”新建工程,在搜索栏中输入单片机型号“STM32F103R6”,出现两种封装的搜索结果。
(3)在搜索结果中选择LQFP64封装,双击打开左图配置界面。
(4)在右图“Pinout&Configuration”界面上将引脚PC0修改为“GPIO_Output”模式。
(5)在左图“ProjectManager”界面上对工程命名,制定工程目录,指定集成开发环境为“TrueSTUDIO”后点击“DeviceConfigurationToolCodeGeneration”按钮
生成单片机程序工程目录。
本案例没有对时钟树进行设定,采用了默认的内部RC振荡源。
接下来就是继续完成程序代码的编写。
本次任务需要用到两个API函数(API函数来源于“UM1850_DescriptionofSTM32F1HALandLow-layerdrivers.PDF”文档):①引脚输出状态翻转函数HAL_GPIO_TogglePin
例程:HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);//将PC0引脚输出状态取反②延时函数HAL_Delay
例程:下面是操作步骤。HAL_Delay(500);//延时500ms(即0.5s)
(1)在左侧“Src”目录中找到main.c文件,双击打开。(5)值得注意的是,由于STM32CubeIDE默认不生成HEX文件,需要人为设置:在IDE主界面菜单栏中选择“Project(工程)”→“Properties(属性)”打开如图3-12所示属性对话框,选择“C/C++Build(C/C++生成)”→“Settings(设置)”→“ToolSettings(工具设置)”→“MCUPostbuildoutputs(单片机编译后输出)”,在“ConverttoIntelHexfile(-Oihex)(转换为英特尔HEX文件)”项目打钩并保存,回到IDE主界面后再按下生成按钮,即可在源代码编译成功后输出HEX文件。3.1.3使用ISP方式下载程序
程序编写完毕,生成HEX文件以后,通过ISP工具下载到单片机电路运行验证。特别注意的是,接线的时候请断电。
步骤:
①将开发板上核心板的PC0引脚与LED模块LED0的引出端用杜邦线连接;②将开发板USB通信口与计算机USB口通过USB线连接;③接通电源;④将核心板拨动开关拨到“ISP”位置,按下“RST”复位按钮;⑤通过ISP工具“FlashLoaderDemonstrator”读取工程目录下“.../Debug/2.1.Hex”文档中的机器码,并将机器码下载至单片机Flash,操作步骤请见后页。
ISP工具桌面图标是。⑥程序下载完毕后,将核心板拨动开关拨回到“Run”位置,再次按下复位按钮“RST”,单片机将按照设定程序运行。具体的代码另外给出。技能训练(选做):
修改电路,改由PC1驱动LED1作单灯闪烁,闪烁周期改为2s。Tobecontinued...3.2按钮输入能力目标:
理解并掌握单片机GPIO三种主要的输入类型,掌握使用Proteus仿真单片机电路的方法。任务要求:电路如图所示,要求通过按钮BTN0控制LED0的亮灭(LED0接PC0,BTN0接PC1)。3.2.1GPIO的输入类型STM32F103R6具有51个GPIO(General-purposeinput/output,通用输入输出)引脚,每个引脚都具备如图所示结构。GPIO的八种工作模式:
本次课着重讲其中的⑺⑻两种工作模式。⑴推挽输出⑵开漏输出⑶复用推挽输出⑷复用开漏输出⑸模拟量输入⑹浮空输入⑺下拉输入⑻上拉输入⑴当图中上拉电阻、下拉电阻均未接入时输入模式为浮空输入,此时若输入信号断开,则引脚输入状态不定(不常用);
⑵当图中上拉电阻接入时输入模式为上拉输入,此时若输入信号断开,则引脚输入为高电平;(常用)
⑶当图中下拉电阻接入时输入模式为下拉输入,此时若输入信号断开,则引脚输入为低电平。(常用)
典型按钮电路如图:
左图引脚PC1配置为上拉输入时,若松开按钮,引脚默认输入高电平,若按下按钮,引脚输入低电平;右图引脚PC1配置为下拉输入时,若松开按钮,引脚默认输入低电平,若按下按钮,引脚输入高电平;
如果选择浮空输入模式,则按钮上拉或下拉电阻必须外接,比如本项目仿真电路。3.2.2电路仿真
电路仿真采用Proteus,操作步骤:
(1)在桌面上找到并双击程序图标,打开左图主界面,选择“NewProject”新建工程(如右图),过程中除了路径之外,其余均采用缺省设定。(2)拾取元件。左图中在左侧工具栏中按下(ComponentMode)按钮进入元器件拾取模块,接着按下右侧的(PickDevice)按钮打开中图元器件拾取对话框。在中图“Keywords”搜索栏内依次输入本次课题所需元器件名称,在右图“Results”结果栏内选中并双击所需元器件将其拾取到主界面元器件中,完成后关闭对话框。(3)放置元件并更改元器件参数。在主界面元件池中依次选择所需元件将其摆放到主界面中心图纸上。依次选中图纸上的元件,在鼠标右键弹出的快捷菜单内选择“EditProperties”打开右图所示编辑属性对话框,修改参数后点“OK”按钮保存退出。(4)电路连线。在左侧工具栏中按下(TerminalsMode)终端模式按钮,在终端列表中分别选择电源终端POWER、接地终端GROUND并添加到图纸中,完成电路连线。(5)设定电源正负极参数。在主界面中选择菜单栏“Design=>ConfigurePowerRails...”打开电源轨配置对话框如左图所示,需要设定的是:①将电源正极由5V改为3.3V;②将模拟量电源正负极VDDA与VSSA分别添加到VCC/VDD网络与GND网络,否则单片机将无法仿真,添加结果如中图与右图所示。(6)指定HEX文件路径。回到主界面,选择原理图中的单片机并在右键快捷菜单中选择“EditProperties”打开如图所示编辑属性对话框,在对话框中点击按钮,选择HEX文件并确认保存。(7)运行仿真。按下左下角运行按钮即可开始仿真。注意:Proteus8.8和8.9仿真模型中上拉模式不可用,必须外接上拉电阻。3.2.3任务程序的编写
本次内容需要用到的新的API函数是:
引脚输入函数HAL_GPIO_ReadPin
例程:
(现场操作演示...)GPIO_PinStatex=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1);//读取PC1输入状态技能训练(选做):通过两只按钮控制一个LED的亮灭,要求两个按钮一个采用上拉输入模式,另一个采用下拉输入模式。参考电路如下图所示。Tobecontinued...3.3流水灯之软件延时能力目标:理解并掌握通过改进算法提高编程效率的方法。任务要求:
电路如图所示,要求实现流水灯效果,即按LED0~LED7的顺序依次点亮,每次仅限一只LED发光,周期4秒。3.3.1程序算法
算法(Algorithm)是指解决方案准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。首先人们自然会想到“位操作法”,但这种算法编程效率太低,下面介绍两种比较好的算法:⑴查表法
即将8个状态,定义为8个字节,每隔一段时间,按先后顺序查表并将8个状态量赋值给单片机的规定输出口,状态表如下。序号状态字节(二进制)状态字节(十六进制)序号状态字节(二进制)状态字节(十六进制)11111,1110FE51110,1111EF21111,1101FD61101,1111DF31111,1011FB71011,1111BF41111,0111F780111,11117F⑵移位法所谓移位法,就是利用C语言的移位运算符“<<”、“>>”实现状态字节的循环移位。但由于C语言的移位运算符只能实现单向移位,因此必须通过一定的算法来间接实现,具体的做法是:假设M位数据A需要循环左移N位(M>N),先将A左移N位得到B,再将A右移(M-N)位得到C,最后将A、B按位求或运算即可获得最终结果。比如,8位二进制数,各位均用字母表示为“ABCDEFGH”,需要循环左移3位,可先将原数左移3位,得到“DEFGH000”,再将原数右移5位,得到“00000ABC”,最后将两数按位或即可得到循环左移3位的结果“DEFGHABC”,示意如下。①ABCDEFGH<<3→DEFGH000②ABCDEFGH>>5→00000ABC③DEFGH000|00000ABC
→DEFGHABC3.3.2任务程序的编写
本次任务程序将根据位操作法、查表法与移位法三种方法编写,需要用到的新的API函数:
①引脚输出函数HAL_GPIO_WritePin
新版HAL库改为:GPIO_PIN_RESETGPIO_PIN_SET
例程:今天我们要对若干个引脚一起输出相同的电平值,比如
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);//PC0输出低电平HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);//PC0输出高电平HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_5,GPIO_PIN_RESET);//PC0、PC2、PC5三个引脚同时输出低电平或者也可以使用LL库函数,但LL库与HAL库(默认)不能同时使用,且必须在STM32CubeIDE“ProjectManager=>AdvancedSetting”中进行修改。
②引脚输出函数LL_GPIO_WriteOutputPort(推荐)
例程:LL_GPIO_WriteOutputPort(GPIOC,0x00000009);//除了PC0、PC3输出高电平,PC口其余引脚输出低电平(现场操作演示...)技能训练(选做):要求将任务要求中流水灯改为跑马灯,其他条件不变。Tobecontinued...3.4数码管动态显示能力目标:
在理解数码管工作原理与多位数码管电路构成的基础上,理解并掌握多位数码管动态显示字符的程序编制方法。任务要求(改):
仿真电路如图所示,要求编程实现八位数码管中的低四位显示任意四位十进制数字。3.4.1数码管的结构数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。共阴极数码管采用高电平驱动,而共阳极数码管采用低电平驱动。段码列表见右表。注意表中的引脚顺序,由高到低为dpgfedcba显示字符共阳极驱动码共阴极驱动码二进制十六进制二进制十六进制全灭11111111FFH0000000000H011000000C0H001111113FH111111001F9H0000011006H210100100A4H010110115BH310110000B0H010011114FH41001100199H0110011066H51001001092H011011016DH61000001082H011111017DH711111000F8H0000011107H81000000080H011111117FH91001000090H011011116FHA1000100088H0111011177HB1000001183H011111007CHC11000110C6H0011100139HD10100001A1H010111105EHE1000011086H0111100179HF100011108EH0111000171H3.4.2数码管的静态显示与动态显示⑴数码管的静态显示
一位数码管的典型驱动电路如下图所示,通常按照A、B、C……DP接单片机引脚从低位到高位(比如PC0、PC1、PC2……PC7)的接法。如图这种直连的接法由于必须考虑到单片机引脚的输入/输出电流能力,往往由于驱动电流不够致使数码管发光亮度偏暗,可以考虑在单片机与数码管之间加一个锁存器以提高数码管驱动电流。☆STM32引脚输入/输出电流能力:单个引脚最大输出8mA、最大输入20mA,整机最大输出/输入总电流150mA。⑵数码管的动态显示
为节约单片机引脚,多位数码管往往采用“并联”的连接方式,以二位数码管为例,如图所示。
以任务电路为例,多位数码管的段码输入端共用同一组(7个或8个)GPIO引脚,使多位数码管按一定顺序(比如从左往右)快速轮流显示字符信息的显示方式。由于人眼存在“视觉暂留”效应,当刷新速度够快时,会给人一种所有数码管同时发光的错觉。考虑到GPIO输出电流能力有限,每一位数码管均由反相器(即非门电路)输出高电平选通。3.4.3任务程序的编写
(现场操作演示...)技能训练:修改任务,使数码管逆序选通。Tobecontinued...3.5矩阵式键盘能力目标:
理解矩阵式键盘的电路组成及工作原理,掌握矩阵式键盘程序的编制方法。任务要求:
如下图所示是一个4×4的矩阵式键盘仿真电路,要求编程实现当按下任意一个按钮时,数码管立即显示当前按下按钮对应的键值。3.5.1矩阵式键盘的电路组成
●“独立式按钮”,适合于按钮较少的应用场合;
●“矩阵式键盘”,适合于按钮较多的应用场合。如图所示,是一种4×4的矩阵式键盘的结构示意图,分别由4条行线、4条列线联接而成。3.5.2矩阵式键盘的行扫描法行扫描法检测步骤如下:①初始化,所有行线均输出高电平;②仅行线X0输出低电平,检测按键0~按键3,若其中某个按键被按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年北师大版初二语文上册第五单元基础闯关模拟试卷及答案
- 2026年消费者考试试题及答案
- 2026年北师大版初二数学上册第一单元提升训练模拟试卷及答案
- 2026年深圳市振业集团股份有限公司人员招聘考试备考试题及答案
- 2026年贵阳市公共交通集团有限公司人员招聘笔试备考试题及详细答案解析
- 2026年上海联合产权交易所人员招聘笔试模拟试题及详细答案解析
- 2026年喷枪及类似器具制造行业产业链研究报告及未来五至十年市场集中化与渠道变革
- 2026年北京金隅集团股份有限公司人员招聘笔试参考试题及详细答案解析
- 2026年中石化第十建设公司人员招聘笔试参考题库及详细答案解析
- 2026年非织造布制造行业市场集中度研究报告及未来五至十年线上线下融合与全域运营
- 2026年高等教育法学类自考-00261行政法学历年参考题库含答案解析
- 2026年初级会计职称考试基础试题(含解答)及答案
- 中国电动两轮车换电行业市场现状及投资态势分析报告(智研咨询)
- 2025年法考客观题考试真题及答案
- 公共部门经济学(第三版)
- 瀛海太和劳动服务有限责任公司招聘笔试题库2026
- 全息儿童体能训练
- 消防水池有限空间监理细则
- 业务跟单职责及流程制度
- 智能教室设备安装与调试方案
- 2026年大连理工大学经济管理学院MBA面试含答案
评论
0/150
提交评论