发新帖

[原创] 【OneNET 麒麟座开发板试用体验】+3.流水灯&delay函数分析

[复制链接]
发表于 2017-9-4 23:03:19
| 3461 查看 | 8 回复
本帖最后由 lygo 于 2017-9-4 23:04 编辑

大家好,我是lygo,今天又见面了。前面介绍了开箱环境的搭建以及各种资料分享,那么今天我就开始正式接触板子了(最近会多发些帖子),
今天主要讲的有两个方面:
(1)、LED灯流水灯的实现
(2)、例程中Delay()函数的讲解
首先先看第一个:
(1)、LED灯流水灯的实现:
其实要弄懂一块板子,必须的看原理图,知道原理图了我们才知道如何去写程序:
所以问题就来了,如何去点亮LED灯呢,首先先让我们看看原理图,如下:
1.png
再看MCU图:
2.png
我们发现四个LED灯分别是挂在:PC7/PC8/PC10/PA12,所以我们就可以操作GPIO口实现点灯了。(模式这些都不用讲了吧,相信大家都十分清楚了,这里设置为退挽输出)
然后就来编写点灯函数吧:


首先看看硬件初始化函数吧:
3.png
其中延时函数待会详细讲,而LED初始化主要就是配置GPIO模式等,如下图:
4.png

首先是打开 GPIO 总线上的时钟,然后是配置模式、 引脚号、 承载频率。最后初始化 GPIO。
最后看看主程序吧:
5.png
关于点灯为什么写成结构体,这是为了后面上传数据方便,后面将做一个详细讲解。

注意:这里点灯其实不用这么复杂,其实也可以直接操作IO口,比如低电平点灯,直接设置LED0 = 0;这样挺方便的(这里就不详细讲了,十分简单的)
(2)、关于Delay函数的介绍
首先你得理解SysTick的一些寄存器介绍,便于理解内部原理:
SysTick 主要包含CTRLLOADVALCALIB 4 个寄存器,如下:
7.png
8.png
接下来就看程序吧,其实注释得都十分详细了。见下图:
9.png
10.png
SYSTICK 的时钟固定为HCLK 时钟的1/8,在这里我们选用内部时钟源72M,所以SYSTICK的时钟为9M,即SYSTICK定时器以9M的频率递减。
这里再说一点:
12.png
这里无非就是保证计数过程在进行,当他计数为0时,SysTick->CTRL的第16位就为0,即就是与(1<<16)相与为0就退出了。即就是计数到达。
好的本次实验完成,关于现象就不贴出来了吧,马上断网了。。。。。。。
下次再见,谢谢大家!!!


评分

参与人数 6 +11 收起 理由
chen0000009 + 1
Sourcelink + 1
qq1328512480 + 6
黄莨元 + 1
汉云 + 1
SingleYork + 1

查看全部评分

我要点赞 4

举报

发表于 2017-9-5 22:43:52
学习了,不错,点赞果断
我要点赞 1

举报

发表于 2017-9-5 23:07:18
黄莨元 发表于 2017-9-5 22:43
学习了,不错,点赞果断

谢谢块儿

评分

参与人数 1 +1 收起 理由
黄莨元 + 1

查看全部评分

我要点赞 0

举报

发表于 2017-9-9 23:48:01
wo我觉得OK大佬大佬,做笔记
我要点赞 0

举报

发表于 2017-9-12 07:30:44
qq1328512480 发表于 2017-9-9 23:48
wo我觉得OK大佬大佬,做笔记

,鸭子哥你也不耐啊
我要点赞 0

举报

发表于 2017-9-29 08:28:41
为大佬点赞。搬板凳,期待后续。
我要点赞 0

举报

发表于 2017-9-29 18:13:37
QQ截图20170929181018.jpg
我要点赞 0

举报

发表于 2018-11-19 10:07:23
6666666666
我要点赞 0

举报

发表于 2019-7-18 13:56:32
点赞点赞
我要点赞 0

举报

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