在线时间1537 小时
UID258281
注册时间2014-12-6
NXP金币0
TA的每日心情 | 开心 2020-1-12 00:23 |
---|
签到天数: 745 天 连续签到: 1 天 [LV.9]以坛为家II
金牌会员
 
- 积分
- 6868
- 最后登录
- 2020-7-15
|
建立好开发环境后进行了简单的一次GPIO初步测试。
一、实验资源
1、LPC11U68(OM13058)开发板;
2、KEIL V5.25.2.0;
3、lpcopen_3_03_keil_iar_lpcxpresso_11u68;
二、实验过程
1、实验任务主要是操作GPIO控制“PIO2_16”引脚所接的D1(绿色)闪烁。从原理图可以看到D1包含三个LED:
2、程序实现。根据之前的一些学习经历,在例程中查看了一些相关文件,如:"clock_11u6x.h"、"clock_11u6x.c";"gpio_11u6x.h"、"gpio_11u6x.c"等函数,并结合UM10732手册中相关章节内容,了解到操作“GPIO”外设必须打开相应的时钟并设置端口数据方向。参照例程中的写法写了如下初始化函数:
- void LED_Port_Init(void)
- {
- Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_GPIO);//GPIO时钟使能
- Chip_GPIO_SetPinDIROutput(LPC_GPIO, 2, 16);//设置PIO2_16端口为输出
- Chip_GPIO_WritePortBit(LPC_GPIO, 2, 16, 1);//设置PIO2_16端口置高
- }
复制代码
3、另外定义了“宏”以及一个测试用的延时函数:
- #define LED_HIGH() Chip_GPIO_WritePortBit(LPC_GPIO, 2, 16, 1);
- #define LED_LOW() Chip_GPIO_WritePortBit(LPC_GPIO, 2, 16, 0);
复制代码- void delay(unsigned int t)
- {
- unsigned int j;
- for(; t>0; t--)
- for(j=10000; j>0; j--);
- }
复制代码
4、主循环中让PIO2_16输出电平按单位时间间隔变化:
- int main(void)
- {
- LED_Port_Init();
- while (1)
- {
- delay(1000);
- LED_HIGH();
- delay(1000);
- LED_LOW();
- }
- return 0;
- }
复制代码
三、实验现象
程序编译下载后可以看到D1中绿色LED闪烁。
四、实验总结
第一次看到实验现象挺开心,但是例程中库函数的很多内容还需要结合手册深入理解和学习,并通过大量的实验来进行体验。
|
|