OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2376|回复: 0

GPIO设置及滴答定时器设置测试

[复制链接]

6

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2015-9-22
在线时间
32 小时
发表于 2016-12-4 16:46:15 | 显示全部楼层 |阅读模式
初学单片机,最基本的方法都是从IO口控制LED开始的,当然这里也不例外,但这里将更深入来讲解IO口,并使用系统的滴答定时器来做延时定时,而不是通常我们看到的众多泛泛而谈的例程。
首先我们要有一个整体的思路,控制LED就是要控制IO口的输出,定时让IO口输出01来达到LED灯闪烁的功能。
控制IO口输出需要配置IO口的输出方式,对于GPIO的配置有8种模式:
1.      浮空输入;
2.      模拟输入;
3.      上拉输入;
4.      下拉输入;
5.      开漏输出;
6.      推挽输出;
7.      复用开漏输出;
8.      复用推挽输出;
浮空输入:一般多用于外部按键输入,在该输入状态下,IO口的电平状态完全由外部输入决定,如果该引脚悬空,那么该端口的电平是不确定的;
模拟输入:应用ADC模拟输入;
上拉输入:IO内部上拉电阻输入;
下拉输入:IO内部下拉电阻输入;
开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适用于做电流型的驱动,其吸收电流的能力相对强;
开漏形式的电路有以下几个特点:
1.      利用外部电路的驱动能力,减少IC内部的驱动。
2.      一般用于连接不同电平的器件,用来匹配电平,因为开漏引脚不外接上拉电阻时,只能输出低电平,如需要同时具备输出高电平的功能,则需要接上拉电阻,这样就可以通过改变上拉电源的电压,来达到改变传输电平的功能,如上拉电阻可以提供TTL/CMOS电平输出等。
3.      会带来上升沿的延时,因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。
4.      可以将多个开漏输出的IO口连接到一条线上,通过一只上拉电阻,在不增加如何器件的情况下,形成“与逻辑”关系。
推挽输出:可以输出高低电平,连接数字器件;高低电平由IC的电源决定。输出既可以向负载灌电流,也可以从负载抽取电流;既提高电路的负载能力,也提高开关速度。
根据我们的硬件设计,我们这里将控制LEDIO口配置为推挽输出方式。
程序编程步骤如下:
1.初始化需要用到的IO口,配置为推挽输出方式,并设置IO口速度为50MHz,如下图所示:
1_1.jpg
2.设置滴答定时器,并使能该定时器的中断功能,设置方法如下图所示:
2-1.jpg
这里通过设置TICKINT位来设置启用滴答定时器的中断功能。
3.滴答定时器的中断响应程序,直接让IO口值取反,如此则没定时一段时间,IO口的状态就会反转,如我们将定时时间设置为1000ms,那么将没隔1S将看到LED闪烁。
程序注意及重点说明:
1.滴答定时器的中断使能及延时时间说明;
设置中断响应只需要设置TICKINT这个位就可以了,设置延时值需要将计算出来的数值加载到LOAD寄存器。
2.设置IO口的输出方式及速度;
IO口的输出方式根据硬件来确定,IO口输出速度要看具体的程序要求,如要设置IO口定时1us来反转电平,那么IO口的速度就不能设置为2MHz,需要将IO口速度设置为50MHz,否则IO口的响应速度达不到要求。
如下图所示是用示波器测试出1us电平反转的实测图,(要定时1us时间需要将滴答定时器的LOAD值修改,将除数8000修改为8000000)由图中可以看出,周期大概还多出0.08us的时间,这个是因为指令的执行还需要时间,指令的执行时间等于6个时钟周期,即6x1/72=0.08us,其中72为系统时钟速度。
3-1.png
需要源代码或有问题咨询的朋友添加QQ707372788
关注微信公众号:嵌入式STM32软硬件开发,来了解更多关于STM32的开发吧,想学的速度来啊。

嵌入式开发微信公众号:嵌入式STM32软硬件开发
STM32交流,加好友,Q707372788
STM32交流群:383260480
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-25 19:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表