完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
本帖最后由 上官梦舞 于 2016-11-14 11:32 编辑
前言:
单片机的学习在环境搭建完成后基本上第一件事是控制IO口,当然也有些单片机第一个教程是单片机的时钟系统。
我觉得时钟还是很复杂的,而且一般的单片机系统初始化都已经把时钟配置好了,吼吼吼,偷偷懒,直接使用,进入GPIO练习。
相信看这篇文档,应该使用的是我提供的附件里面的
Demo工程。毕竟为了减少不必要的议论。
工程结构还是很清爽的,
app里面放主函数和外部硬件程序或者驱动;
device里面放了系统文件和启动文件。
Driver里面放了单片机库文件,当前有看门狗
WDOG和系统集成模块
SIM(SIM提供系统控制和芯片配置寄存器
);
system里面放了任务文件。
Com和
doc空闲
打开
main.c找到主函数
int main()。
可以看出真的一个单片机第一件事是配置全局的时钟呢!!!
可是我玩
51的时候都没这么麻烦,所以时钟还是先放放吧,反正有人已经配置好了。嘿嘿。
虽然现在我们不去了解时钟怎么配置的,但要知道我们目前使用的是哪个时钟,频率是多少。
了解系统的时钟频率
找到启动文件看到了重启后程序是先运行
SystemInit()这个函数的。
那简单找到这个函数呗,在
那我们的时钟频率是多少呢?
原来有个脚
CLOCK_SETUP的变量决定的啊,找到
clock setup,
瞬间转移,666,技能+100分
顺便我们也看到了一些变量的定义
得知我们的时钟被配置为
20MHz。
分析这个,注释已经加上。就是把端口都初始化一遍。
中断周期可以看到是systemcoreclock/1000*systick-cycle什么意思呢?
可以查到systick-cycle=1,也就是说我们的单片机是单周期指令。
系统时钟是20MHz,中断时间是把20MHZ分成1000份,
也就是20000个时钟周期产生一次中断,也就是1ms哦,1000次中断就是1S。
发现下面还有两个小函数是干嘛的呢?
原来是各个时间段的计数器。
因为本节讲GPIO,只是控制一下IO口,所以串口先不看了,直接看led初始化的。
里面只有ETM1Init();
什么,定时器初始化???what,我要讲GPIO怎么定时器了,我擦。
(实际上这里demo的led是pwm的,你看看你的板,三个颜色还是呼吸灯呢!)
那怎么办?我要搞GPIO啊,那这里我们要开始写程序了。
加入GPIO.C库文件。
修改main.c
添加头文件路径
加入路径
写到这里吧,因为写的太细了,超长,附上原pdf文档。可以下载来看更方便。
【NV32F100x试用体验】 GPIO.zip(942.75 KB, 下载次数: 15 )
下面是源文件,如果自己按照步骤有错误,可以对照。
nv32demoGPIO_12MHZ.zip(1.18 MB, 下载次数: 15 )
谢谢支持。 |
|
相关推荐
|
|
|
|
|
|
|
|
【xG24 Matter开发套件试用体验】深入了解Silicon Labs xG24 Matter开发套件
327 浏览0 评论
441 浏览0 评论
464 浏览0 评论
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
2042 浏览3 评论
899 浏览0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10895 浏览31 评论
小黑屋|手机版|Archiver|德赢Vwin官网(湘ICP备2023018690号)
GMT+8, 2024-8-29 14:20, Processed in 0.692471 second(s), Total 76, Slave 58 queries .
Powered by德赢Vwin官网 网
© 2015bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号