做网站在浏览器预览怎么出现了状况,国内最大的域名交易平台,自己做网站花钱么,wordpress文章图片显示错误嵌入式基础实验第一个就是点灯#xff0c;地位相当于编程界的hello world。
如下为LED原理图#xff0c;要让相应LED发光#xff0c;需要给I/O口设置输出引脚#xff0c;低电平#xff0c;二极管才会导通 2.1 打开初始工程#xff0c;编写代码 以下会实现BLINKY常亮地位相当于编程界的hello world。
如下为LED原理图要让相应LED发光需要给I/O口设置输出引脚低电平二极管才会导通 2.1 打开初始工程编写代码 以下会实现BLINKY常亮RGB灯挨个转换亮灭状态出现不同颜色
#include LPC11xx.h// 粗糙的delay函数
void delay_1s()
{uint16_t i,j;for(i0;i30000;i)for(j0;j200;j);
}int main()
{// 使能GPIO时钟LPC_SYSCON - SYSAHBCLKCTRL | (1UL 6);// 设置引脚为输出引脚LPC_GPIO1 - DIR | (1UL 9); // PIO1_9 BLINKYLPC_GPIO2 - DIR | (1UL 8); // PIO2_8 GREENLPC_GPIO2 - DIR | (1UL 9); // PIO2_9 REDLPC_GPIO2 - DIR | (1UL 10);// PIO2_10 BLUELPC_GPIO1 - DATA ~(1UL 9); //拉低点亮 while(1){LPC_GPIO2 - DATA ^ (1UL 8); // 状态反转delay_1s();LPC_GPIO2 - DATA ^ (1UL 9); // 状态反转delay_1s();LPC_GPIO2 - DATA ^ (1UL 10); // 状态反转delay_1s();}
}2.2 函数封装 为了之后更好使用现在将这四个灯用函数封装放在LED文件中。
路径包含
先在工程下新建一个文件夹我新建了一个code 如下图option - c/c - path打开,选择文件夹 结果如下其中.\是工程下的目录有些工程文件进行移植时直接复制粘贴工程出现很长的路径找不到别人引用的路径下的文件导致报错问题就在这。需要改一下路径把文件包含进来。需要文件时把文件放工程里一份会更好移植。 界面内文件结构处理当往里面新加文件时可以处理一下里面的分组也就是group直接一堆放里面起始也行换一下就一个作用美观。 具体操作为找到三个箱子红绿白魔术棒右边那个也可以直接右击上方文件夹选择manage project items 界面如下 跟路径里差不多的操作我改完是这样然后点击ok即可不点ok不保存 右击选择Add New Item 分别选.c .h 都存在code下面即可 然后往里写内容
LED.c
#include LED.hvoid LED_Init(void)
{// 使能GPIO时钟LPC_SYSCON - SYSAHBCLKCTRL | (1UL 6);// 设置引脚为输出引脚LPC_GPIO1 - DIR | (1UL 9); // PIO1_9 BLINKYLPC_GPIO2 - DIR | (1UL 8); // PIO2_8 GREENLPC_GPIO2 - DIR | (1UL 9); // PIO2_9 REDLPC_GPIO2 - DIR | (1UL 10);// PIO2_10 BLUE
}LED.h
#ifndef _LED_H_
#define _LED_H_#include LPC11xx.h#define LED_ON() LPC_GPIO1 - DATA ~(1UL 9); // 对应位给0
#define LED_OFF() LPC_GPIO1 - DATA | (1UL 9); // 对应位给1
#define LED_Toggle() LPC_GPIO1 - DATA ^ (1UL 9); // 对应位异或1#define LED_G_ON() LPC_GPIO2 - DATA ~(1UL 8); // 对应位给0
#define LED_G_OFF() LPC_GPIO2 - DATA | (1UL 8); // 对应位给1
#define LED_G_Toggle() LPC_GPIO2 - DATA ^ (1UL 8); // 对应位异或1#define LED_R_ON() LPC_GPIO2 - DATA ~(1UL 9); // 对应位给0
#define LED_R_OFF() LPC_GPIO2 - DATA | (1UL 9); // 对应位给1
#define LED_R_Toggle() LPC_GPIO2 - DATA ^ (1UL 9); // 对应位异或1#define LED_B_ON() LPC_GPIO2 - DATA ~(1UL 10); // 对应位给0
#define LED_B_OFF() LPC_GPIO2 - DATA | (1UL 10); // 对应位给1
#define LED_B_Toggle() LPC_GPIO2 - DATA ^ (1UL 10); // 对应位异或1void LED_Init(void); #endifmain.c
#include LPC11xx.h
#include LED.h// 粗糙的delay函数
void delay_1s()
{uint16_t i,j;for(i0;i30000;i)for(j0;j200;j);
}int main()
{LED_Init();LED_ON();while(1){LED_G_Toggle();delay_1s();LED_R_Toggle();delay_1s();LED_B_Toggle();delay_1s();}
}以上函数可达到与刚开始函数等效的结果。其中开启位置零、关闭位置一和反转位异或一涉及到位运算相关知识如果不会自己去搜就行。
2.3 下载效果展示
编译下载后效果如下 中间的BLINKY常亮右上角的RGB三色灯变换颜色