完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
LiteFwLib固件库之GPIO驱动程序及样例工程 2015年1月 固件库原帖见 https://bbs.elecfans.com/jishu_464558_1_1.html 哎,此处省略一万字,只为说明一个情况,“忙”。。。如果非要加一个形容的话,那就是,“哎”。。。 参加咱们KL25的学习活动已经整整一个星期了,其实之前手头上也有一块FRDM-KL25,所以可以提前做一些功课,即使经历了不少波折,但我还是拿到了跟大家一起团购的FRDM-KL25板子,挺开心的。 作为学习过程的记录,我也为FRDM-KL25写了一个简单的固件库。我在学习KL25芯片的过程中,也会不断丰富LiteFwLib固件库,除了USB之外(USB实在是一个大模块,软件上的内容就更多了),其它模块的驱动基本上都会搜罗进来。等完善之后,就发布出来第一个正式版本,平时做做小开发啥的就已经能够满足需求了。现在已经支持不少功能啦。 最近看咱们的学习群有不少童鞋也陆续收到的板子,我寻思着大家也可以用我的LiteFwLib固件库做一些实验了。除了LiteFwLib本身使用专业的软件架构及版本管理等优良特性外(自卖自夸哈),附带的一些例子程序也可以作为大家熟悉模块功能带来一些帮助,也方便大家熟悉LiteFwLib的使用方法。当然,更长远的一个打算,就是希望以后咱们写单片机程序不用肯生涩难懂的手册,只要简单地调用几个功能函数就可以完成自己的设计。 今天为大家带来的是关于GPIO驱动程序及样例工程gpio_led。 关于GPIO驱动程序,玩过单片机的童鞋们都非常熟悉,无论是谁家的单片机都有这个功能。对GPIO的操作函数API(Application Program Interface, 应用编程接口)也就是那么几个:配置引脚方向啊,设定输出逻辑电平,读取输入逻辑电平等等。对于飞思卡尔的GPIO还在硬件上设计了一个非常实用的小功能,就是反转输出逻辑电平,特别是控制小灯闪烁的时候特别好用,谁用谁知道。 相对应地,在LiteFwLib中的GPIO驱动程序中也设计了完成这几个功能的API,见图1。 图1 这里面提供了两组API,分别以端口和引脚作为使用操作对象。端口操作在模拟并行通信总线上用的比较多,但是引脚操作在单片机的应用中更为广泛。 关于驱动的介绍就这么简单说一下,基本上都是通用的概念,这里就不照搬教科书了。下面介绍一下LiteFwLib固件库中应用GPIO的一个例子。 在LiteFwLib固件库的“example”目录下存放了使用驱动模块最基本的例子工程,关于GPIO的例子工程是“gpio_led”。插一句,写到这里我才意识到编号第一的工程竟然是“uart_hello”,好吧,都已经写到这里了,关于“uart_hello”的帖子就放到下回分解吧。“gpio_led”演示的就是使用GPIO的引脚输出功能控制FRDM-KL25板子上的小灯闪起来,下面大家跟我一起看看用LiteFwLib控制这个小灯的程序是怎么运行的。 首先打开“gpio_led”的Keil工程,如图2。 图2 在“gpio_led”中,我们使用到了UART模块、GPIO模块,SIM模块和PORT模块: - UART负责建立板子同电脑的通信,使用在串口终端同板子进行交互; - GPIO就是控制小灯亮灭啦; - SIM模块看似默默无闻,但实际上是非常重要的,负责在芯片内部将各个模块连接起来,比较常用的就是把从MCG(时钟发生器)产生的时钟信号传递到各个功能模块让它们工作起来。 - PORT模块是芯片内部信号到芯片引脚上的一个关口,过了这个关口,芯片内部的电平信号才能通过芯片引脚传递到电路板上。 首先,在init_board()函数里要完成对板子的初始化。如图3。 第一个红框里是调用SIM模块在芯片内部连了一些线,第二个红框里就是调用SIM模块把时钟信号引导到PORT模块让芯片内部信号可以同行到外部,同时给用作通信端口的UART提供工作时钟信号。第三个红框是配置引脚功能的。芯片内部丰富但引脚数量有限,所以一般一个引脚都有可能复用成多种功能,实际上就是由PORT模块决定这个引脚要同哪个模块的信号接通。这里打通的只是一个UART的两个引脚作为UART的Tx和Rx,还有控制LED小灯的三个引脚作为GPIO功能。第四个红框是配置UART工作的,因为标准输入输出(stdio)需要搭载到这个串口上,所以要在正式的程序之前就要配置好。 初始化板子之后,就可以准备配置GPIO控制小灯啦。例子程序的执行逻辑如图4。 图4 先是调用GPIO_SetPinLogic()设定好控制三个小灯的GPIO若为输出时的电平信号为高(小灯灭),然后调用GPIO_SetPinDir()设定这三个GPIO引脚的数据方向为输出。这里有个顺序要特别强调。为什么我们不是先设定输出再设定输出电平呢?这是为了保证在引脚配置为输出时不会产生不正确的控制电平。在芯片复位后,默认GPIO引脚的方向是输入的,这个时候GPIO引脚不会影响到控制信号线上的电平,一旦设置数据方向,就必须保证控制信号电平是正确的。 后面就是调用GPIO_TogglePinLogic()控制反转GPIO引脚输出电平,闪烁小灯啦。 运行效果 将程序下载到FRDM-KL25板子后,在电脑上打开串口终端。然后戳一下FRDM-KL25板子上的复位按键复位程序,就可以看到串口终端上输出的欢迎信息,如图5。 |
|
相关推荐
|
|
|
|
|
|
|
|
真心感谢楼主!!!!!!!!!!
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1930个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36414 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4782 浏览 1 评论
6099 浏览 1 评论
6807 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4243 浏览 0 评论
641浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
637浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
639浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
725浏览 2评论
833浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 13:26 , Processed in 1.029318 second(s), Total 56, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号