sửa lỗi trong LPCXpresso

marukuchibi

Trứng gà
giúp e sửa lỗi này với .em làm thử cái demo mà nó ra lỗi này không biết sửa sao :|
code:
#ifdef __USE_CMSIS
#include "LPC11xx.h"
#endif

#include "driver_config.h"
#include "gpio.h"
#include "timer32.h"

int main (void)
{
init_timer32(0,TIME_INTERVAL);
enable_timer32(0);

while(1)
{
GPIOSetDir(2,2,1);
GPIOSetValue(2,2,0);
delay32Ms(0,500);
GPIOSetValue(2,2,1);
delay32Ms(0,500);
}

}
với lỗi này
../src/main.c:21:17: error: 'SystemAHBFrequency' undeclared (first use in this function)
 
cái này bạn cần gọi thêm hàm GPIOInit();
vì trong tất cả dòng ARM thì các buyt giao tiếp ngoại vi là hoạt động độc lập nên nó cần một xung CLK cung cấp cho nó.
trong hàm GPIOInit() có dòng sau làm việc đó.
LPC_SYSCON->SYSAHBCLKCTRL |=(1<<6);
tức là bit thứ 6 có chức năng cung cấp nguồn CLK cho buyt I/O
 
ừ cái này mình test đâu có sau đâu nhỉ ? bạn coi add đủ driver chưa ?
 

marukuchibi

Trứng gà
đã làm như bạn Phương tuấn nhưng vẫn ra lỗi như vậy
@shindo: mình add như trong clip hướng dẫn ,không biết thiếu gì nữa :|
 
mình cũng đã test nhưng không thấy lỗi xảy ra. bạn thử lại xem mà bạn dùng keil c hay là code_red (LPCXpresso).
 
bạn add file LPC11xx chưa file core_m0, file clk_config và vấn đề ở chỗ cái 'SystemAHBFrequency' dc khai báo trong file system_LPC11xx.h :D
 
nếu có thể bạn gửi nguyên cái project của bạn lên đây cho tụi mình sửa lỗi lun dc ko?
 
file của bạn đây. bạn có thể tạo projects mà ko cần import file cmsis cũng được. ở mục cmsis library .... bạn chọn none bỏ chọn ở ô enable CRP rồi bạn làm tiếp. để add linker thì bạn kích chuột phải vào tên projects chọn properties->c/c++ general->paths and symbols rồi bạn xem thử trong file của mình có có cái gì mà bạn không có thì add vào nhé. đó là mình khai báo link để dẫn đến các hàm đó thôi.
http://www.mediafire.com/file/a2xaiu19ebbg1sz/demo.rar
 
Thực ra lỗi này là do các bạn chưa chỉnh sửa lại trong file driver_config.h
Hãy so sánh hai file sau:
/*
* driver_config.h
*
* Created on: Aug 31, 2010
* Author: nxp28548
*/

#ifndef DRIVER_CONFIG_H_
#define DRIVER_CONFIG_H

#include <LPC11xx.h>

#define CONFIG_ENABLE_DRIVER_CRP 1
#define CONFIG_CRP_SETTING_NO_CRP 1

#define CONFIG_ENABLE_DRIVER_ADC 1

//#define CONFIG_ENABLE_DRIVER_PRINTF 1

/* DRIVER_CONFIG_H_ */
#endif

/*
* driver_config.h
*
* Created on: Aug 31, 2010
* Author: nxp28548
*/

#ifndef DRIVER_CONFIG_H_
#define DRIVER_CONFIG_H

#include <LPC11xx.h>

#define CONFIG_ENABLE_DRIVER_CRP 1
#define CONFIG_CRP_SETTING_NO_CRP 1

#define CONFIG_ENABLE_DRIVER_TIMER32 1
#define CONFIG_TIMER32_DEFAULT_TIMER32_0_IRQHANDLER 1

#define CONFIG_ENABLE_DRIVER_TIMER16 1
#define CONFIG_TIMER16_DEFAULT_TIMER16_0_IRQHANDLER 1

#define CONFIG_ENABLE_DRIVER_GPIO 1

/* DRIVER_CONFIG_H_ */
#endif
Ta thấy trong file thứ 2 có config các tính năng GPIO và Timer nên khi sử dụng các hàm trong hai file gpio.c và timer32.c không bị báo lỗi.
Để biết cần config như thế nào cho các file driver ta nhìn vào code của nó rồi sang file driver_confing.h bổ sung thêm.
Ví dụ: trong file can.c có đoạn
#include "driver_config.h"
#if CONFIG_ENABLE_DRIVER_CAN==1
#include "can.h"

/* statistics of all the interrupts */
volatile uint32_t BOffCnt = 0;
volatile uint32_t EWarnCnt = 0;
volatile uint32_t EPassCnt = 0;
..........
Muốn xử dụng được các hàm trong file can.c ta phải thêm dòng
#define CONFIG_ENABLE_DRIVER_CAN 1
trong file driver_cofnig.h
 
Top