恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3--GPIO模块(二)
苏州大学资料KEIL模版
链接:https://pan.baidu.com/s/1e3g--GzvsU-lEIqy8WttGg
提取码:qwik
通过IO控制小灯亮灭。
//============================================================================
//文件名称:light.h
//功能概要:小灯构件头文件
//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)
//版本更新:2014-12-10 V1.0
//芯片类型:KEA128
//============================================================================#ifndef _LIGHT_H //防止重复定义(_LIGHT_H 开头)
#define _LIGHT_H//头文件包含
#include "common.h" //包含公共要素头文件
#include "gpio.h" //用到gpio构件//指示灯端口及引脚定义
#define LIGHT_0 (PORTC|0) //灯0使用的端口/引脚
#define LIGHT_1 (PORTC|1) //灯1使用的端口/引脚
#define LIGHT_2 (PORTC|2) //灯2使用的端口/引脚
#define LIGHT_3 (PORTC|3) //灯3使用的端口/引脚//灯状态宏定义(灯亮、灯暗对应的物理电平由硬件接法决定)
#define LIGHT_ON 1 //灯亮
#define LIGHT_OFF 0 //灯暗//=================接口函数声明===============================================
//============================================================================
//函数名称:light_init
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(5) 表示为B口5号脚)
// state:设定小灯状态。由宏定义。
//函数返回:无
//功能概要:指示灯驱动初始化。
//============================================================================
void light_init(uint_16 port_pin, uint_8 state);//============================================================================
//函数名称:light_control
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(5) 表示为B口5号脚)
// state:设定小灯状态。由宏定义。
//函数返回:无
//功能概要:控制指示灯亮暗。
//============================================================================
void light_control(uint_16 port_pin, uint_8 state);//============================================================================
//函数名称:light_change
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(5) 表示为B口5号脚)
//函数返回:无
//功能概要:切换指示灯亮暗。
//============================================================================
void light_change(uint_16 port_pin);#endif //防止重复定义(_LIGHT_H 结尾)//===========================================================================
//声明:
//(1)我们开发的源代码,在本中心提供的硬件系统测试通过,真诚奉献给社会,不足之处,欢迎指正。
//(2)对于使用非本中心硬件系统的用户,移植代码时,请仔细根据自己的硬件匹配。
//
//苏州大学飞思卡尔嵌入式中心
//技术咨询:0512-65214835 http://sumcu.suda.edu.cn
//===========================================================================
//文件名称:light.c
//功能概要:小灯构件源文件
//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)
//版本更新:2014-12-10 V1.0
//芯片类型:KEA128
//===========================================================================#include "light.h"//===========================================================================
//函数名称:light_init
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(5) 表示为B口5号脚)
// state:设定小灯状态。由light.h中宏定义。
//函数返回:无
//功能概要:指示灯驱动初始化。
//===========================================================================
void light_init(uint_16 port_pin, uint_8 state)
{gpio_init(port_pin, 1, state);
}//===========================================================================
//函数名称:light_control
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(5) 表示为B口5号脚)
// state:设定小灯状态。由light.h中宏定义。
//函数返回:无
//功能概要:控制指示灯亮暗。
//===========================================================================
void light_control(uint_16 port_pin, uint_8 state)
{gpio_set(port_pin, state);
}//===========================================================================
//函数名称:light_change
//函数参数:port_pin:(端口号)|(引脚号)(如:(PORTB)|(5) 表示为B口5号脚)
//函数返回:无
//功能概要:切换指示灯亮暗。
//===========================================================================
void light_change(uint_16 port_pin)
{gpio_reverse(port_pin);
}
主程序头文件
//============================================================================
//文件名称:includes.h
//功能概要:工程总头文件
//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)
//版本更新:2014-12-10 V1.0
//芯片类型:KEA128
//============================================================================#ifndef _INCLUDES_H //防止重复定义(开头)
#define _INCLUDES_H//包含使用到的构件头文件
#include "common.h"
#include "gpio.h"
#include "light.h"//防止全局变量重复声明的前缀处理方法
#ifdef GLOBLE_VAR //GLOBLE_VAR在main.c文件中宏定义
#define G_VAR_PREFIX //main.c文件中使用全局变量不加“extern”前缀
#else
#define G_VAR_PREFIX extern //其他文件中使用全局变量自动加“extern”前缀
#endif
//声明全局变量(全局变量类型前一律前缀G_VAR_PREFIX)
G_VAR_PREFIX char g_uart_num;//定义宏常数
#define RUN_COUNTER_MAX 1500000ul //小灯闪烁频率#endif //防止重复定义(结尾)
c文件
//说明见工程文件夹下的Doc文件夹内Readme.txt文件
#define GLOBLE_VAR //只需在main.c中定义一次,用来防止全局变量的重复定义#include "includes.h"int main(void){//1. 声明主函数使用的变量uint_32 mRuncount; //主循环计数器//2. 关总中断DISABLE_INTERRUPTS; //关总中断//3. 初始化外设模块light_init(LIGHT_0, LIGHT_OFF); //初始化灯0light_init(LIGHT_1, LIGHT_OFF); //初始化灯1light_init(LIGHT_2, LIGHT_OFF); //初始化灯2light_init(LIGHT_3, LIGHT_OFF); //初始化灯3//4. main中使用的局部变量初始化mRuncount = 0; //主循环计数器//5. 全局变量初始化//6. 使能模块中断//7. 开总中断ENABLE_INTERRUPTS; //开总中断//进入主循环//主循环开始==================================================================for (;;){//运行指示灯闪烁----------------------------------------------------------mRuncount++; //主循环次数计数器+1if (mRuncount >= RUN_COUNTER_MAX) //主循环次数计数器大于设定的宏常数{mRuncount = 0; //主循环次数计数器清零light_change(LIGHT_0); //灯0(LIGHT_0)状态变化light_change(LIGHT_1); //灯1(LIGHT_1)状态变化light_change(LIGHT_2); //灯2(LIGHT_2)状态变化light_change(LIGHT_3); //灯3(LIGHT_3)状态变化}//以下加入用户程序--------------------------------------------------------} //主循环end_for//主循环结束==================================================================return 0;
}
恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3--GPIO模块(二)相关推荐
- 恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记4——ADC
KEA128的ADC有8个寄存器 ADC编程基本步骤: 1.打开ADC模块时钟 2.开启ADC_APCTL1引脚控制寄存器相应引脚的AD功能(即关闭这些引脚的IO功能) 3.配置ADC_SC3寄存器的 ...
- 恩智浦+飞思卡尔后你需要知道的十件事
这两年,半导体行业似乎进入了多事之秋,收购战此起彼伏.就在今年短短的3个月里,半导体行业并/收购案有:Avago Technologies 以 6 亿美金价格收购无线网络公司 Emulex Corp ...
- 好程序员web前端分享Nodejs学习笔记之Stream模块
好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...
- OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五
OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...
- OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- JavaScript学习笔记之数组(二)
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
- node.js学习笔记5——核心模块1
node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...
- python学习笔记4(模块
python学习笔记4(模块) 一.模块 1.1 import语句 1.2 __name__属性 1.3 dir()函数 1.4 包 2.1 导入特定模块: 二.输入与输出 2.1 format使用 ...
最新文章
- android调试步骤,Android16_Android调试步骤
- TabHost.TabSpec中的标签实现图文左右排(默认上下排)
- DBeaverEE7.3.0安装教程
- effective java ---读书笔记一
- Windows端口占用情况?
- ie 调用java的时候报错,关于java的applet在网页中打开的时候出错
- SAP License:SAP不便解决的问题之七——权限问题
- 【文件系统】NTFS、FAT32、exFAT
- R语言中ggplot Theme Assist安装使用教程
- 【WPS技能】xlsx表格根据单元格的值改变行背景色
- 项目邮件[置顶] 失业的程序员(十二):潜意识的智商
- 职教云助手手机版_职教云app下载安装_职教云最新版本下载网址
- 4.TradingView K线和成交量没有自适应区域显示,ma线显示会错乱,高低不齐(巨坑)
- 浅谈IT行业加班有没有价值
- 潜渊症LINUX环境部署全流程
- 【MATLAB实验】数学实验实验求根问题三种方法、积分画图及古典密码设计(二分法、牛顿法、不动点迭代法)
- windows无法访问指定设备 路径或文件(100%解决)
- Python高级特性与网络爬虫(二):使用Selenium自动化测试工具爬取一号店商品信息
- 小程序毕业设计 基于微信医院预约挂号小程序毕业设计开题报告功能参考
- 水下机器人之电池选择
热门文章
- 消息队列:生产者/消费者模式
- 互联网基础架构之锅的传递及作用域
- 使用 Mailgun 配置 Ghost 邮箱
- ccd视觉定位教程_什么是CCD视觉定位自动焊锡机器人?
- 戴某某说:“内心永无止境的期盼”
- 决定系数 均方误差mse_误差分析计算公式及其 matlab 代码实现(mse、mape、rmse等)...
- python加上子类的特性_Python 中 Meta Classes详解
- 寒假总结 2020.02
- 目前最流畅的android手机,盘点国内最流畅的4款安卓手机,堪称用500天不卡顿
- 几何画板绘制三棱锥的教程