การใช้งาน UART ของ ARM (LPC213X) เบื้องต้นบทความนี้เป็นผลพลอยได้มาจากคำถามที่มีคนถามผมมาทางอีเมล์ เพื่อให้เกิดประโยชน์ยิ่งขึ้นจึงขอนำโปรแกรมมาเขียนไว้ที่นี่ เผื่อจะเป็นประโยชน์กับผู้ที่หลงทางมา
#include <LPC213X.H>
// กำหนดการทำงานของ UART ให้มีความเร็วที่ 96000 บิตต่อวินาทีที่ XTAL=11.0592MHz
void UartInit(void)
{
PINSEL0 = 0x5;
U0FCR = 0x7;
U0LCR = 0x83;
U0DLL = 0x9; // 96000 bps @ XTAL=11.0592MHz
U0DLM = 0x0;
U0LCR = 0x3;
}
// ส่งค่าออกไปทาง Serial Port โดยการเขียนค่าลงไปที่ U0THR
void UartWrite(char *str)
{
unsigned char i=0;
while(*(str+i))
{
U0THR=*(str+i); // !! ใช้ความสามารถของ FIFO ถ้าข้อมูลใน str ยาวเกินไปจะเกิดความผิดพลาดขึ้น
i++;
}
while(!(U0LSR & (1<<6)));
}
// ฟังก์ชัน main เรียกใช้งานฟังก์ชัน UartInit() และ UartWrite()
int main(void)
{
UartInit();
UartWrite("shadowwares.com\r\n\0");
while(1);
}
รายละเอียดไม่ขอพูดถึงนะครับ มีคำถาม หรือคำแนะนำเพิ่มเติม คลิกปุม "ตอบ" เลยครับ