我有一个来自 Embeded 艺术家的 LPC3141 开发人员工具包,并且我已经成功地创建了基于 Eclipse 的免费 IDE,它可以成功地为 ARM 编译。我使用包含的闪烁器示例测试了我的 IDE。我有一个启动代码和一个可以工作的链接器脚本,我将从现在开始使用它们。
现在我想学习如何从零开始我自己的闪光灯程序。我必须先编程什么?是GPIO寄存器,定时器寄存器,uart寄存器,……???第一件事是什么?我需要写的东西实际上是 HAL 吗?我已经订购了这本书,你觉得呢?
谢谢你。
问候齐加
我有一个来自 Embeded 艺术家的 LPC3141 开发人员工具包,并且我已经成功地创建了基于 Eclipse 的免费 IDE,它可以成功地为 ARM 编译。我使用包含的闪烁器示例测试了我的 IDE。我有一个启动代码和一个可以工作的链接器脚本,我将从现在开始使用它们。
现在我想学习如何从零开始我自己的闪光灯程序。我必须先编程什么?是GPIO寄存器,定时器寄存器,uart寄存器,……???第一件事是什么?我需要写的东西实际上是 HAL 吗?我已经订购了这本书,你觉得呢?
谢谢你。
问候齐加
这些页面可能有用,相同的系列,不同的芯片。
http://lpcstuff.blogspot.com/2008/09/lpc-2148-blinker-1.html
http://lpcstuff.blogspot.com/2010/08/nxp-mbed-aint-so-bad-after-all.html
您不需要计时器或中断或类似的东西来开始。有一个(长)的C循环计数,然后改变gpio的状态。您需要将 gpio 配置为输出。小心不要让 C 编译器优化你的延迟循环。稍后您可以开始轮询计时器,然后在您觉得确实需要时中断。
使用arm微控制器真的很容易上手。您需要做的就是阅读微控制器的数据表和用户手册。您可以在用户手册中找到有关外围设备和寄存器的所有文档
https://www.nxp.com/docs/en/user-guide/UM10362.pdf
例如,此代码用于 lpc2148():
#include <lpc214x.h> // this header file is provided by nxp and contains all register addresses
/* delay function is using only for loop to generate delay.
For accurate timing, use a hardware timer/counter (systick timer is recommended (because it is so easy and configurable via cmsis functions that are provided by ARM)) */
void delay_ms(unsigned int count)
{
unsigned int j=0,i=0;
for(j=0;j<count;j++)
{
for(i=0;i<3000;i++)
asm("nop");
}
}
/* main function */
int main()
{
PINSEL2 = 0x000000; //Configure the P1 Pins for GPIO;
IODIR1 = 0xffffffff; //Configure the P1 pins as OUTPUT;
while(1)
{
IOSET1 = 0xffffffff; // Make all the Port pins as high
delay_ms(1000);
IOCLR1 = 0xffffffff; // Make all the Port pins as low
delay_ms(1000);
}
return 0;
}