版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、科 技 学 院课程设计报告( 2015 - 2016年度第 二 学期)名 称:ARM试验GPIO 题 目: 院 系: 科 技 学 院 班 级: 13k2 学 号:31 学生姓名: 指导教师: 张老师 设计周数: 成 绩: 日期:2016年 5月 10 日实验一:GPIO(1)蜂鸣器一:实验现象本次实验是使用LPC178/177x系列Cortex-M3中GPIO的引脚功能模块,使用P3.30来控制蜂鸣器,使得蜂鸣器按一定的频率鸣叫。控制电路如下图所示:二:实验代码分析#include "./LPC177x_8x/LPC177x_8x.h"#include "./LP
2、C177x_8x/type.h" /工程模块#define BEEPON(LPC_GPIO3->CLR = 1ul << 30) /蜂鸣器工作 #define BEEPOFF(LPC_GPIO3->SET = 1ul << 30) /蜂鸣器不工作 void myDelay (uint32_t ulTime) /延时子函数 uint32_t i = 0; while (ulTime-) for (i = 0; i < 20000; i+); void GPIOInit( void ) /GPIO口初始化子函数 LPC_GPIO3->DIR
3、 |= 1<<30; /设置P3.30为输出 LPC_GPIO3->SET |= 1<<30; /设置P3.30为高电平 void beepOperate (uint32_t uiFrequency) /蜂鸣器初始化子函数 while (1) BEEPON; /蜂鸣器鸣叫 myDelay(4000); BEEPOFF; /蜂鸣器不鸣叫 myDelay(4000); int main (void) /主函数 SystemInit(); /系统初始化,不能删除 GPIOInit(); /通用I/O口初始化 beepOperate(400); /蜂鸣器工作 (2)读取按
4、键状态一:实验现象本次实验是使用LPC178/177x系列Cortex-M3中GPIO的引脚功能模块,通过判断按键连接的P0.12引脚是否为低电平来控制蜂鸣器,使得按键Key1按下,蜂鸣器按一定的频率鸣叫。控制电路如下图所示:二:实验代码分析#include "./LPC177x_8x/LPC177x_8x.h"#include "./LPC177x_8x/type.h" /工程模块#define BEEPON (LPC_GPIO3->CLR = 1ul << 30) /蜂鸣器鸣叫 #define BEEPOFF (LPC_GPIO3-
5、>SET = 1ul << 30) /蜂鸣器不鸣叫 void myDelay (uint32_t ulTime) uint32_t i = 0; while (ulTime-) for (i = 0; i < 20000; i+); void GPIOInit( void ) LPC_GPIO0->DIR &= (1 << 12); /设置P0.12为输入 LPC_GPIO3->DIR |= 1 << 30; /设置P3.30为输出 LPC_GPIO3->SET |= 1 << 30; /设置P3.30为高电
6、平 void key1Scan(void) /按键扫描子函数 while (1) if (!(LPC_GPIO0->PIN & 1 << 12) /判断按键是否按下 myDelay(40); if (!(LPC_GPIO0->PIN & 1 << 12) break; /按键确实按下,退出死循环 void beepOperate (uint32_t uiFrequency) /蜂鸣器子函数while (1) BEEPON; /蜂鸣器响 myDelay(400); BEEPOFF; /蜂鸣器不响 myDelay(400); int main (
7、void) SystemInit(); /系统初始化,不可删除 GPIOInit(); /管脚初始化 key1Scan(); /按键扫描 beepOperate(400); /蜂鸣器以一定频率工作 三:通过修改某些语句从而使得蜂鸣器的鸣叫发生变化 若把蜂鸣器子函数中的某些语句改动一下,就会使得蜂鸣器的鸣叫发生改变,例如:void beepOperate (uint32_t uiFrequency)while (1) if (!(LPC_GPIO0->PIN & 1 << 12) myDelay(40); /延时消抖功能if (!(LPC_GPIO0->PIN &
8、amp; 1 << 12) /判断按键是否按下 BEEPON; myDelay(400);else BEEPOFF; myDelay(400); 经过这个改动后,实验现象就变成:按键Key1按住蜂鸣器就鸣叫,松开按键后,蜂鸣器停止鸣叫(但由于有400ms的延时,所以并不是一松开就停止鸣叫)。(3)I/O引脚的中断功能一:实验现象本次实验是使用LPC178/177x系列Cortex-M3中GPIO中断测试程序,在系统上电后,MCU进入省电模式,按下KEY2(不管是上升沿中断还是下降沿中断都可以触发)唤醒后,CPU进入到中断服务子函数中,这时候LED2和LED3两个同时闪烁,闪烁了40
9、0ms后,CPU开始进入LED工作,这时候两个LED灯轮流闪烁。二:实验代码分析#include "./LPC177x_8x/LPC177x_8x.h"#include "./LPC177x_8x/type.h"#define SLEEP 0x01 /睡眠模式标志 #define DEEPSLEEP 0x02 / 深度睡眠模式标志 #define POWERDOWN 0x04 / 掉电模式标志 #define LEDON (LPC_GPIO3->CLR = 1ul << 25 | 1ul << 31) /LED2和LED3亮
10、 #define LEDOFF (LPC_GPIO3->SET = 1ul << 25 | 1ul << 31) /LED2和LED3灭 #define LED2ON LPC_GPIO3->CLR = 1ul << 25) /LED亮 #define LED3ON (LPC_GPIO3->CLR = 1ul << 31) /LED3亮 #define LED2OFF (LPC_GPIO3->SET = 1ul << 25) / LED2灭 #define LED3OFF (LPC_GPIO3->SET =
11、 1ul << 31) /LED3灭 void myDelay (uint32_t ulTime) uint32_t i = 0; while (ulTime-) for (i = 0; i < 20000; i+); void ledOperate (uint32_t uiFrequency)/LED灯设置子函数 while (1) LED2ON; myDelay(400); LED3ON; myDelay(400); LED3OFF; myDelay(400); LED2OFF; myDelay(400); void GPIO_IRQHandler (void) /GPI
12、O口中断子函数 uint32_t i = 0; uint32_t status = 0; uint32_t status_R_P0 = 0, status_F_P0 = 0; uint32_t status_R_P2 = 0, status_F_P2 = 0; status = LPC_GPIOINT->IntStatus; if (status & 0x1) /P0口中断 status_R_P0 = LPC_GPIOINT->IO0IntStatR; status_F_P0 = LPC_GPIOINT->IO0IntStatF; if (status_R_P0) L
13、PC_GPIOINT->IO0IntClr = status_R_P0; / P0口上升沿中断 for(i = 0; i < 4; i+) LEDON; myDelay(400); LEDOFF; myDelay(400); if (status_F_P0) /P0口有下降沿中断 LPC_GPIOINT->IO0IntClr = status_F_P0; / 清除P0口中断状态 for(i = 0; i < 4; i+) LEDON; myDelay(400); LEDOFF; myDelay(400); if (status & 0x4) /P2口中断 sta
14、tus_R_P2 = LPC_GPIOINT->IO2IntStatR; status_F_P2 = LPC_GPIOINT->IO2IntStatF; if (status_R_P2) / P2口上升沿中断 LPC_GPIOINT->IO2IntClr = status_R_P2; for(i = 0; i < 4; i+) LEDON; myDelay(400); LEDOFF; myDelay(400); if (status_F_P2) /P2口下降沿中断 LPC_GPIOINT->IO2IntClr = status_F_P2; for(i = 0; i
15、 < 4; i+) LEDON; myDelay(400); LEDOFF; myDelay(400); return;void GPIOInit( void ) LPC_GPIO3->DIR = 1ul << 25 | 1ul << 31; /配置P3.25和P3.31为输出引脚 LPC_GPIO3->SET = 1ul << 25 | 1ul << 31; /LED灯初始状态为不亮 LPC_GPIOINT->IO0IntEnF = 1 << 10; /使能P0.10检测下降沿中断 void lowPower
16、ModeSet (uint32_t uiModeFlag) switch (uiModeFlag) case 0x01: /进入睡眠模式 _WFI(); break; case 0x02: /进入深度睡眠模式 SCB->SCR |= 0x04; _WFI(); break; case 0x04: /进入掉电模式 SCB->SCR |= 0x04; LPC_SC->PCON |= 0x1; _WFI(); break; default: break; int main (void) SystemInit(); /系统初始化,不可删除 GPIOInit(); /LED接口初始化 NVIC_EnableIRQ(GPIO_IRQn); /使能GPIO中断 lowPowerModeSet(SLEEP); /进入睡眠模式 ledOperate(400); /LED灯以一定的频率工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创业版内部审计制度
- 地铁集团内部管理制度
- 城管大队内部制度
- 大学内部会计控制制度
- 大师工作室内部激励制度
- 妇幼内部绩效考核制度
- 服装厂内部员工管理制度
- 村内部财务管理制度
- 村计划生育内部管理制度
- 格拉默内部公司制度
- GB/T 8452-2025玻璃瓶罐垂直轴偏差试验方法
- 2026年山东城市服务职业学院单招职业技能考试题库附答案详解
- 2026年山西卫生健康职业学院单招职业适应性测试题库含答案
- 2026年江苏信息职业技术学院单招综合素质考试题库及参考答案详解一套
- 成都市金牛区2025年社区网格工作人员考试题库及答案
- 部编七年级-语文文言文练习及答案
- 46566-2025温室气体管理体系管理手册及全套程序文件
- 2025年剑桥商务英语(BEC)初级考试真题及答案
- 安全生产等12项管理制度文本
- 茶叶健康的秘密武器-探究茶叶的营养价值与健康影响
- 电工单招实操考试题库及答案
评论
0/150
提交评论