飞思卡尔S12XE系列---基础GPIO操作
MC9S12XET256MMA普通IO口输入输出功能的使用:
IO口数据方向寄存器:设定0为输入模式,设定1为输出模式。复位后默认输入模式。
IO数据寄存器:输出模式下–设定1为高电平 设定0为低电平
输入模式下–检测1为高电平 检测0为低电平
上/下拉:
输入模式可以设定上/下拉功能,可以保证浮空引脚的输入值固定,对非浮空引脚可以提高响应速度,增强抗干扰能力
输出模式–禁用上下拉。
驱动能力:
输入模式–禁用
输出模式–可以降低引脚驱动功率,使驱动能力降低约50% ,降低功率消耗。
1、创建好工程后打开main.c文件,如下图所示:
2、通过硬件原理图找到LED对应的端口号和引脚号,以及按键对应的端口号和引脚号,我这里使用PORT B 的第0脚来控制LED的亮灭 以及PORT A的第0脚来检测按键的输入。
在MC9S12XET256.c文件中可以找到PORT AB的数据寄存器以及数据方向寄存器的对应的地址,如下图所示:
在MC9S12XET256.h文件中能够找到其定义,如下图所示:
PORT B的数据寄存器:
PORT AB 的数据方向寄存器:
3、在main.c文件中对端口引脚进行初始化。
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */#define LED_dir DDRB_DDRB0 //使用宏定义LED引脚方便区分
#define LED_DATA PORTB_PB0 #define SWITCH_dir DDRA_DDRA0 //使用宏定义按键引脚方便区分
#define SWITCH_DATA PORTA_PA0 void main(void)
{/* put your own code here */LED_dir = 1;//初始化LED为输出LED_DATA = 0;SWITCH_dir = 0;//初始化按键为输入SWITCH_DATA = 1;EnableInterrupts;for(;;) {if(SWITCH_DATA == 0)//检测到按键按下{LED_DATA = ~LED_DATA;//LED状态改变}} /* loop forever *//* please make sure that you never leave main */
}
4、编写完成后进行编译,调试。
5、运行后,按键按下可以看到LED亮,再次按下LED灭,说明程序运行正常。
这里只进行了简单的输入输出配置,如要设置上/下拉,驱动能力配置可以在MC9S12XET256.h文件中找到对应的寄存器进行配置即可;
飞思卡尔S12XE系列---基础GPIO操作相关推荐
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT架构. Bootloader是嵌入式MCU开发里很常见的一种专用的应用程序,在一个没有Boo ...
- freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解(一)之时钟设置
Flash擦写的内容,个人做HC9S12系列单片机时觉得应该是各模块内容中最难而且是最麻烦的一步了.只有能够对Flash进行擦写以后,所做的Bootloader才有真正手段将串口或者其他通讯手段接收到 ...
- ftm模块linux驱动,飞思卡尔k系列_ftm模块详解.doc
飞思卡尔k系列_ftm模块详解 1.5FTM模块1.5.1 FTM模块简介FTM模块是一个多功能定时器模块,主要功能有,PWM输出.输入捕捉.输出比较.定时中断.脉冲加减计数.脉冲周期脉宽测量.在K1 ...
- 飞思卡尔imx7 html5,【经验分享】飞思卡尔IMX6处理器的GPIO配置方式
本帖最后由 FSL_TICS_A 于 2014-3-25 17:05 编辑 在linux或android系统中,假如我们要配置飞思卡尔IMX6处理器的GPIO管脚,比如是GPIO_19这个管脚,那么要 ...
- 飞思卡尔S12系列(基于MC9S12XET256MAA和/MC9S12XEP100)锁存器资料总结和分享
最近在公司做项目,用到飞思卡尔S12系列芯片,为了让自己养成良好习惯,以后每做一部分,都会总结出来,方便自己和他人. 今天讲讲飞思卡尔锁存器部分. CRG时钟合成寄存器(SYNR) 读:任何时刻:写: ...
- 导航属性没有被赋值_excel编程系列基础:操作对象RANDE的属性介绍
编按: 哈喽,大家好!在上篇的VBA文章中,我们提到了RANGE属性,简单介绍了它在选中单元格区域,以及对单元格区域赋值时的作用,但这仅仅是最基础的应用,今天我们继续来讲解RANGE属性. [前言] ...
- 飞思卡尔XS128系列(三) PIT
刚报名参加了第五届飞思卡尔智能车竞赛的时候,知道要用飞思卡尔的16位单片机,当时也没在意,就随便买了本这方面的书,记得书名是:<基于HCS12的嵌入式系统设计>,我是因为这本书各模块后面的 ...
- 飞思卡尔MKL系列单片机用jlink烧写程序出现的Kinetis (connect): Timeout while halting CPU. CPU does not stop.问题
最近用Jlink烧写飞思卡尔MKL16Z128单片机时发现经常出现不能连接成功的情况,用的是SWD接口,排查了好久后来发现问题在单片机的RESET脚上,因为之前用SWD接口的时候只接4线(SWD.SC ...
- 飞思卡尔MC9S12系列单片机地址影射以及分页问题
对于用MCU的人来说,不一定要明白HCS12(x) memory map的机制和联系.因为如果没有系统地学习操作系统和编译原理之类的课程,确实有些难度.并且,对于DG128 XS128这样的MCU,默 ...
最新文章
- 再看nf_conntrack: table full问题
- 在DbGridEh中显示主从表
- mysql基础(一) 编译安装mysql5.5
- 15个顶级Java多线程面试题及回答(高级java工程师)
- app分发平台java_集成 Asset Delivery (Java)
- 监督学习 | SVM 之非线性支持向量机原理
- 更改sql-2008sa密码
- 发布9个月直降2300!这款手机太惨了:卖完下架
- 使用OStressSQL Server压力测试
- 使用result配置结果视图
- [软件更新]gladder2.0.3.3
- matlab有限差分法编程波导_有限差分法及matlab实现.pdf
- springboot test
- 风暴数码论坛教程--开机动画、声音的替换、位置变更及DATA文件夹的使用
- 一键seo提交收录_百度、360快速收录新上线网站技巧、方法
- Android——app内打开安装包,安装包解析失败
- cpu、内存、硬盘之间的关系
- android app被系统回收后重启异常的解决方法
- c语言程序输入自己班级学号,找高手帮忙c语言程序::输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩...
- 请问什么叫纹波?怎样测量纹波?