本帖最后由 youzizhile 于 2014-7-28 21:02 编辑
自从安装驱动和更新debug 镜像成功后,就迫不及待的设计程序。首先是下载最新的示例代码:
参照蓝雨夜的帖子@蓝雨夜 编译相应的程序生成chip_15xx_lib.lib和board_nxp_lpcepresso_1549.lib,然后设置periph_blinky为活动工程,但是编译时总是说
board_nxp_lpcepresso_1549.lib无法打开或者文件不存在,尝试了很多次都是同样的问题,而chip_15xx_lib.lib没有类似的问题。
然后就把生成的board_nxp_lpcepresso_1549.lib移动到另外一个路径不是很深的文件夹,删除原来的文件,这次编译成功。
在main函数添加以下几句话,控制三个灯同时闪烁。
Board_LED_Set(0, false);
Board_LED_Set(1, false);
Board_LED_Set(2, false);
同时要修改
中断控制程序:
/**
* @brief Handle interrupt from SysTick timer
* @return Nothing
*/
void SysTick_Handler(void)
{
Board_LED_Toggle(0);
Board_LED_Toggle(1);
Board_LED_Toggle(2);
}
然后三个灯同时闪烁。
几个相关led控制函数的原型如下:
源文件在board.c中。
#define MAXLEDS 3
static const uint8_t ledpins[MAXLEDS] = {25, 3, 1};
static const uint8_t ledports[MAXLEDS] = {0, 0, 1};
/* Initializes board LED(s) */
static void Board_LED_Init(void)
{
int idx;
for (idx = 0; idx < MAXLEDS; idx++) {
/* Set the GPIO as output with initial state off (high) */
Chip_GPIO_SetPinDIROutput(LPC_GPIO, ledports[idx], ledpins[idx]);
Chip_GPIO_SetPinState(LPC_GPIO, ledports[idx], ledpins[idx], true);
}
}
/* Sets the state of a board LED to on or off */
void Board_LED_Set(uint8_t LEDNumber, bool On)
{
if (LEDNumber < MAXLEDS) {
/* Toggle state, low is on, high is off */
Chip_GPIO_SetPinState(LPC_GPIO, ledports[LEDNumber], ledpins[LEDNumber], !On);
}
}
/* Returns the current state of a board LED */
bool Board_LED_Test(uint8_t LEDNumber)
{
bool state = false;
if (LEDNumber < MAXLEDS) {
state = !Chip_GPIO_GetPinState(LPC_GPIO, ledports[LEDNumber], ledpins[LEDNumber]);
}
return state;
}
/* Toggles the current state of a board LED */
void Board_LED_Toggle(uint8_t LEDNumber)
{
Chip_GPIO_SetPinToggle(LPC_GPIO, ledports[LEDNumber], ledpins[LEDNumber]);
}
/* Set up and initialize all required blocks and functions related to the
board hardware */
void Board_Init(void)
{
/* Sets up DEBUG UART */
DEBUGINIT();
/* Initialize GPIO */
Chip_GPIO_Init(LPC_GPIO);
/* Initialize LEDs */
Board_LED_Init();
}
我的其它帖子:
LPC1500体验+开发环境的构建
LPC1500体验+驱动步进电机设计