基于LPC1768嵌入式系统设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式实验报告
学院:
专业:
班级:
姓名:
学号:
指导老师:
实验一系统节拍定时器实验
【实验目的】
(1)掌握LPC1768芯片的使用
(2)在开发平台上开发第一个程序
(3)熟悉lpc1768的GPIO控制
【实验内容】
控制开发平台的蜂鸣器周期性(1秒)交替鸣叫。
【实验原理】
【原理图】
【实验步骤】
1使用Realview MDK创建一个新的工程,经过一系列配置后
2新建一个文件,点击File 菜单下的New。输入代码,点击保存
3 对工程进行配置完成以后,编译、链接、下载到开发板上
程序代码
#include "LPC17xx.h"
/**************************************************************** *****************************************
宏定义
***************************************************************** ****************************************/
#define BEEP (1ul <<26)
uint32_t GulSystick = 0;
uint32_t GucDelay1S = 0;
/****************************************************************
*****************************************
** Function name: myDelay
** Descriptions: 软件延时
** input parameters: 无
** output parameters: 无
** Returned value: 无
*****************************************************************
****************************************/
//void myDelay (uint32_t ulTime)
//{
// uint32_t i;
//while (ulTime--) {
// for (i = 0; i < 5000; i++);
//}
//}
/****************************************************************
*****************************************
** Function name: GPIOInit
** Descriptions: GPIO初始化
** input parameters: 无
** output parameters: 无
** Returned value: 无
*****************************************************************
****************************************/
void GPIOInit( void )
{
LPC_PINCON->PINSEL1 &= ~(0x3 << 20); /* 将P0.26初始化为GPIO功能 */
LPC_GPIO0->FIODIR |= BEEP; /* 将P0.26方向设置为输出 */
LPC_GPIO0->FIOSET |= BEEP; /* 将P0.26初始化输出高电平 */
}
/****************************************************************
*****************************************
** Function name: SysTick_Handler
** Descriptions: 系统节拍定时器中断服务函数
** input parameters: 无
** output parameters: 无
** Returned value: 无
*****************************************************************
****************************************/
void SysTick_Handler(void)
{
if (GulSystick++ >= 99)
{ /* 配置一秒的延时
*/
GulSystick = 0;
GucDelay1S = 1;
}
}
/****************************************************************
*****************************************
** Function name: main
** Descriptions: 系统节拍定时器例程。短接P0.26与BEEP,启
动程序,蜂鸣器隔1秒交替鸣叫
** input parameters: 无
** output parameters: 无
** Returned value: 无
*****************************************************************
****************************************/
int main (void)
{
SystemInit(); /* 系统初始化,切勿删除 */
GPIOInit();
SysTick_Config(100000000/100);
while (1)
{
while(GucDelay1S == 0);
GucDelay1S = 0;
LPC_GPIO0->FIOSET |= BEEP;
while(GucDelay1S == 0);
GucDelay1S = 0;
LPC_GPIO0->FIOCLR |= BEEP;
}
}
引脚功能选择寄存器1(PINSEL1 - 0x4002 C004)
PINSEL1寄存器控制端口0高半部分的位功能。仅当引脚选择使用GPIO功能时,
FIO0DIR寄存器中的方向控制位才有效。对于其它功能来说,方向是自动控制的。
对于100引脚封装,引脚功能选择寄存器1的位功能描述如表所述。