วิศวกรอิเล็กทรอนิกส์ทุกคนชอบที่จะทำลายอุปกรณ์อิเล็กทรอนิกส์และสำรวจสิ่งที่มีอยู่ภายใน ล่าสุดฉันเปิดทีวี LED และพบชิป ARMอยู่ข้างใน ไมโครคอนโทรลเลอร์ที่ใช้ ARM ถูกใช้อย่างมากในผลิตภัณฑ์และระบบฝังตัวประเภทต่างๆ ประกอบด้วยคุณสมบัติขั้นสูงมากมายที่ทำให้มีประสิทธิภาพและเหนือกว่าไมโครคอนโทรลเลอร์อื่น ๆ เช่น 8051, AVR และ PIC LPC2148 เป็นหนึ่งในไมโครคอนโทรลเลอร์ที่ใช้ ARM ที่ใช้กันมากที่สุดดังนั้นเราจะสร้างชุดบทเรียนและโครงการ LPC2148 และแบ่งปันในบทความที่กำลังจะมาถึง นี่คือการสอนครั้งแรกในซีรีส์นี้มุงครอบเริ่มต้น LPC2148 และโปรแกรมมันจะกระพริบไฟ LED
ดังนั้นในบทช่วยสอนนี้เราจะมาทำความรู้จักกับ ARM7 Stick - LPC2148 และเรียนรู้วิธีการเขียนโปรแกรมด้วยซอฟต์แวร์ Keil uVision และ Flash magic เราจะตั้งโปรแกรม LPC2148 ของเราให้กะพริบ LED
ไมโครคอนโทรลเลอร์ ARM
ขั้นตอนที่ 17:ตอนนี้ภายใต้แท็บเอาท์พุทติ๊ก สร้างไฟล์ Hex จากนั้นคลิก'ตกลง'
ขั้นตอนที่ 18:คลิกที่ไอคอน BUILD หรือกด F7 เพื่อสร้างไฟล์ฐานสิบหก
ขั้นตอนที่ 19:ตอนนี้ไฟล์ hex ถูกสร้างขึ้นแล้วและเราสามารถจดบันทึกไว้ที่ด้านล่าง เช่นเดียวกับภาพด้านล่างนี้เนื่องจากระบุว่ามีการสร้างไฟล์ hex
ขั้นตอนที่ 20:ตอนนี้มันถึงเวลาที่จะแฟลชไฟล์ฐานสิบหกเพื่อ ARM7 สติ๊ก ดังนั้นเปิด Flash Magic
เครื่องมือมายากล Flash จะปรากฏดังด้านบน
ด้านล่างนี้เป็นขั้นตอนในการกระพริบ ARM LPC2148:
- เลือก LPC2148
- ระบุหมายเลขพอร์ต COM ตาม Device Manager (ของฉันคือ COM7)
- ให้อัตราการส่งข้อมูลเป็น 38400
- ออสซิลเลเตอร์เป็น 12 Mhz
- เลือก "ลบบล็อกที่เฟิร์มแวร์ใช้"
- ตอนนี้เลือกเส้นทางไฟล์ฐานสิบหก
- ติ๊กตรวจสอบหลังการเขียนโปรแกรม
- แล้วคลิกเริ่ม
หลังจากกระพริบสำเร็จในไม่กี่วินาทีเสร็จสิ้น (สีเขียว)จะปรากฏที่ด้านล่างดังแสดงในภาพด้านล่าง
ตอนนี้คุณสามารถเห็นไฟ LED นั้นเริ่มกะพริบบนเขียงหั่นขนม
คำอธิบายการเข้ารหัส
รหัสที่สมบูรณ์สำหรับLED กะพริบด้วย LPC2148 แสดงไว้ด้านล่าง รหัสเป็นเรื่องง่ายและสามารถเข้าใจได้ง่าย
ไฟล์ส่วนหัวนี้มีไฟล์ทั้งหมดสำหรับไมโครคอนโทรลเลอร์ LPC214x ซีรีส์
# รวม
เนื่องจากเราได้เชื่อมต่อเอาต์พุตกับ P0.10 จึงใช้รีจิสเตอร์ IODIR และทำให้พินพอร์ต 0 พิน 10 เป็นเอาต์พุต
IO0DIR = (1 << 10);
รีจิสเตอร์นี้ตั้งค่า P0.10 เป็น LED ทำให้สูงขึ้น
IO0SET = (1 << 10);
การลงทะเบียนนี้จะล้าง P0.10 เป็น LOW ทำให้ LED OFF
IO0CLR = (1 << 10);
ข้อความด้านล่างแสดงอยู่ใน ขณะที่ วนซ้ำเพื่อดำเนินการโค้ดอย่างต่อเนื่อง
ในขณะที่ (1) { IO0SET = (1 << 10); delay_ms (1,000); IO0CLR = (1 << 10); delay_ms (1,000); }
ฟังก์ชัน delay_ms ใช้เพื่อสร้างเวลาหน่วงระหว่าง SET และ CLR เพื่อกะพริบ LED ในช่วงเวลา 1 วินาที
รหัสที่สมบูรณ์พร้อมวิดีโอสาธิตได้รับด้านล่าง