GPIO输出控制实验 1
1 、实验目的
(1) 掌握LPC2200专用工程模块的使用
(2) 掌握EASYJTAG仿真器的安装与使用
(3) 在开发平台上运行第一个程序
(4) 熟悉ARM7的GPIO控制
2 、实验设备
硬件: PC机 一台
MAGICARM2200-S教学实验开发平台 一套
软件: Windows98/XP/2000系统,ADS1.2集成开发环境
3 、实验内容
控制开发平台的蜂鸣器报警。
4、原理图:
5、源代码 :
/****************************************************************************
* 文 件 名:main.c
* 功 能:蜂鸣器控制。对蜂鸣器B1进行控制,采用软件延时方法。
* 使用I/O口直接控制,采用灌电流方式。
* 说 明:短接蜂鸣器跳线JP7。断开CF卡跳线JP13、GPIO接口J17。
****************************************************************************/
#include \"config.h\"
#define BEEPCON 0x00000080 // P0.7引脚控制B1,低电平蜂鸣
/****************************************************************************
* 名 称:DelayNS()
* 功 能:长软件延时。
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void DelayNS(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
/****************************************************************************
* 名 称:main()
* 功 能:控制蜂鸣器蜂鸣。
****************************************************************************/
int main(void)
{
PINSEL0 = 0x00000000; // 设置管脚连接GPIO
IO0DIR = BEEPCON; // 设置I/O为输入输出模式
// 设置P0.7为输出
while(1)
{
IO0SET = BEEPCON; // BEEPCON = 1
DelayNS(15);
IO0CLR = BEEPCON; // BEEPCON = 0
DelayNS(15);
}
return(0);
}
/******************************************************************************
GPIO输出控制实验 2
1 、实验目的
熟悉ARM的GPIO控制
2 、实验设备
硬件: PC机 一台
MAGICARM2200-S教学实验开发平台 一套
软件: Windows98/XP/2000系统,ADS1.2集成开发环境
3 、实验内容
控制LED显示
4 、原理图
5 、源代码 :
/****************************************************************************
* 文 件 名:main.c
* 功 能:LED显示控制。
* 通过GPIO直接控制8个LED产生流水灯效果
* 说 明:短接LED跳线JP5。
* 这个警告可忽略,C22E: signed constant overflow
****************************************************************************/
#include \"config.h\"
#define LED1 1<<16 // P1.16
#define LED2 1<<17 // P1.17
#define LED3 1<<18 // P1.18
#define LED4 1<<19 // P1.19
#define LED5 1<<20 // P1.20
#define LED6 1<<21 // P1.21
#define LED7 1<<22 // P1.22
#define LED8 1<<23 // P1.23
#define LEDCON 0x00ff0000
const uint32 DISP_TAB[8] = { 0xff01ffff, 0xff02ffff, 0xff04ffff, 0xff08ffff,
0xff10ffff, 0xff20ffff, 0xff40ffff, 0xff80ffff};
/****************************************************************************
* 名 称:DelayNS()
* 功 能:长软件延时
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void DelayNS(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
/****************************************************************************
* 名 称:main()
* 功 能:根据表DISP_TAB来控制LED显示。
****************************************************************************/
int main(void)
{ uint8 i;
PINSEL1 = 0x00000000; // 端口配置为GPIO
IO1DIR = LEDCON; // 配置LED控制I/O方向为输出
while(1)
{
for(i=0; i<8; i++)
{
IO1CLR = DISP_TAB[i]; // 输出LED显示数据
DelayNS(10); // 延时
IO1SET = 0xffffffff; // 全部输出高电平
}
}
return(0);
}
/******************************************************************************
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务