发半个LPC1768 LPC17XX的教程,教程是我自己写的,实验还没写完!
由于需要接触了LPC17XX的M3,感觉这款MCU还不错吧!用起来也还可以,后来出了一块最小系统板,然后就是写教程了。我的目的是:让LPC17XX的学习使用像51那么简单,适合于初学者,一些东西有现成的完整的代码的就不去深究过程!
当然要深入使用这款MCU就需要大家努力了!
注:个人资历有限,教程不可避免的可能有一些问题,希望指各位爱好者指正。
适合于入门者!
教程ourdev_585876BDJYID.pdf(文件大小:1.68M) (原文件名:LPC1768 基础教程_1(部分).pdf)
http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_585877JILY95.jpg
(原文件名:P1060786++.jpg)
http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_585878N7WAIF.jpg
(原文件名:P1060788++.jpg)
http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_585879A7MI83.jpg
(原文件名:P1060794++.jpg) keil 例程ourdev_585880HAK3O7.rar(文件大小:386K) (原文件名:keil_lpc1768.rar)
原理图ourdev_585881LAEK45.pdf(文件大小:40K) (原文件名:LPC1768_min原理图.pdf)
一个是原理图 一个是keil例程我自己的例程还没写完!!! 支持原创! mark强烈支持 虽然用不上,支持! 虽然用不上,支持! 感谢大家的支持呀!这样就有动力每天下班回去写例程和教程了!哈哈哈继续努力!!! 强烈支持楼主 这样的好人 顶 支持 支持,不错,哈,怎么联系,请教问题 mark 支持下! mark Mark mark 应该要支持下! 回复 10 楼 :qq:286115417 贴点代码,不然很空洞的,呵呵!
5.1实验1—4LED跑马灯1
本实验使用连接在P2口上的4个LED灯实现跑马灯的效果。由于LED是采用灌电流方式设计的,所以当P2.0输出低电平时第一个LED灯亮。本实验设计的编程有系统初始化、通用IO口的初始化、系统软延时和通用IO口的输出等。
首先如第3章所述建立一个工程并且设置好工程。在Project里面新建一个组,命名为Source(本实验的所有代码、包括头文件都放在这里),新建一个main.c文件,添加进Source组。在main.c中添加如下代码:
#include "lpc17xx.h" // 包含头文件,头文件内保护系统初始化头文件
void delay(void)
//软延时函数,大工程中不建议使用,占用系统资源,
{ //M3有系统节拍定时器,可以达到效果
uint32_t j;
for(j = 3000000; j > 0; j--);
}
int main(void)
{
uint32_t i=0; //定义变量
SystemInit(); //系统初始化函数
LPC_SC->PCONP|=(1<<15);
//功耗控制,此处可以注释掉,因为复位后GPIO默认开启
LPC_GPIO2->FIODIR=0x0000000F; //FIODIR设置端口的输入输出
LPC_GPIO2->FIOSET=0x0000000F;
//GPIO置位,当某位为1则置位,为0不变
while(1)
{
for(i = 0; i < 4; i++)
{
LPC_GPIO2->FIOCLR = 1 << i;
//GPIO清零,为1清零,为0不变
delay();
}
LPC_GPIO2->FIOSET=0x0000000F;
delay();
}
}
配置keil工程的选项,选择生成HEX,配置仿真器jlink。
在Source组里添加system_LPC17xx.c和core_cm3.c(由于系统初始化函数在system_LPC17xx.c中定义,要调用该函数则要访问system_LPC17xx.c,访问方式有2中一是工程中调用该文件对应的.h文件然后在工程中添加.c文件,二是在工程中将.h和.c文件都调用)。编译,没有错误,下载到目标板上,可以看出4个LED灯依次被点亮,然后熄灭,然后接着被依次点亮,循环。在程序中所偶寄存器的访问都是基于结构体的,如FIODIR是GPIO的输入输出配置寄存器,访问的时候要按结构体方式访问,若要访问P1口则有LPC_GPIO1->FIODIR=0x00000000;由于PCONP在LPC_SC结构体定义的所以访问时需要LPC_SC->PCONP;结构体的定义都是按照功能定义在LPC17xx.h里的,不明白的查看一下。
注:需要将LED闪烁改成一个LED依次点亮,可以将:
LPC_GPIO2->FIOCLR = 1 << i;
修改成:
LPC_GPIO2->FIOPIN =~( 1 << i); 支持。有时间,我也贡献点。呵呵。
没用库,都是寄存器操作。 没有库用的 呵呵
但是我觉得nxp的寄存器做的蛮简洁的,用起来还好!
还有就是基本功能都有例程写好的通用的功能代码!
例如:我们需要使用UART,其实不用自己配置UART的寄存器,NXP官方在出开发板的时候就有对应例程,里面已经将UART的函数写好了,我们只需要调用一下就好了!!
呵呵当然一些不常用的东西还是需要自己配置寄存器的!!!习惯了就好!!! 支持 没事 自己顶一下!!!!!!!!!!!!! 支持! 我也在用1768也不用库!感觉蛮好的! 呵呵 还可以吧感觉 nxp的寄存器设置的蛮清晰的! 支持楼主 上传增加的例程,和例程工程,一并把一套来自网络的例程上传
lpc17XX的USB bootloader在下面这个地址里:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4246924&bbs_page_no=1&search_mode=3&search_text=dengxiaofeng&bbs_id=9999
呵呵!!!希望对大家有用!
点击此处下载 ourdev_588028N8TTFO.pdf(文件大小:1.95M) (原文件名:LPC1768 基础教程-2.pdf)
点击此处下载 ourdev_588029F732QO.rar(文件大小:386K) (原文件名:keil_lpc1768.rar)
点击此处下载 ourdev_588030IPI4IE.rar(文件大小:1.27M) (原文件名:教程配套例程mini_NXP_LPC1768.rar) 支持楼主 mark 呵呵谢谢!!! 今天对LPC1768超了一下频 170M可以运行那天在搞一下
我觉得150M 外围做好点 可能可以稳定运行!
还测试了一下LPC1768的IO
在100M下 LPC_GPIO1->FIOSET=0xffffffff;
LPC_GPIO1->FIOCLR=0xffffffff;
可以搞到15M
呵呵!!!! void UART0_IRQHandler (void)
{
*********
}
这个函数是用查询标志位来实现接收的。请问楼主能否写一个纯粹的中断接收函数?
就向下面的方式:
voidUART0_RECEIVE interrupt 3 (void)
{
} void UART0_IRQHandler (void)
这个函数能帮助解释一下吗?
请问启动代码 ***.S可以自动生成吗? 请问这个文件STARTUP.S可以自动生成吗?谢谢了 void UART0_IRQHandler (void)
不是查标志位 实现接收的 代码是参考 NXP公司评估板例程写的我一直这样用呀
STARTUP.S就是自动生成的呀 *********************************************************************************************************/
#define BEEP (1ul << 11) /* 蜂鸣器P0.11 */
#define BEEP_INIT() FIO0DIR |= BEEP /* 蜂鸣器按制输出 */
#define BEEP_OFF() FIO0SET = BEEP /* 蜂鸣器关 */
#define BEEP_ON() FIO0CLR = BEEP /* 蜂鸣器开 */
/********************************************************************************************************
** Function name: main
** Descriptions: 连线:找到JP4将P2.10与KEY1短接,短接JP17的P0.11与蜂鸣器BEEP
** 按键按下,进入外部中断,使蜂鸣器鸣叫一下
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
int main (void)
{
targetInit(); /* 初始化目标板,切勿删除 */
pinInit(); /* 引脚初始化 */
BEEP_INIT(); /* 蜂鸣器设制输出 */
EXTMODE&=0xFE; /* 外部中断0选择为电平触发 */
EXTPOLAR &=0xFE; /* 低电平触发中断 */
EXTINT =0x01; /* 清除外部中断0的中断标志 */
while (1) {
if (EXTINT & 0x01) { /* 查询等待外部中断0 */
BEEP_ON(); /* 打开蜂鸣器 */
EXTINT = 1 << 0; /* 清除外部中断0中断标志 */
} else {
BEEP_OFF(); /* 关闭蜂鸣器 */
}
}
}
这个是 周立功的 一个外部中断查询的代码全部代码都在这里 可以看一下 楼主你好:
void __irq IRQ_UART0 (void)
这句话是一种常见的串口中断程序。关键字 __irq 表示中断入口
void UART0_IRQHandler (void)
这句话同样是一个串口中断程序。但是为什么没有关键字呢?没有关键字怎么知道他是中断呢?
希望楼主给讲解一下
我自己的猜测。好像移植了uCOS-II的程序都是用void UART0_IRQHandler (void),我估计是用汇编里面写了IRQHandler句柄,将它和中断联系到了一起 楼主。我顶你 楼主,请问LPC1768和LPC2368引脚一样吗?原理图一样吗?谢谢了 回复【31楼】dengxiaofeng天下的人
今天对lpc1768超了一下频 170m可以运行那天在搞一下
我觉得150m 外围做好点 可能可以稳定运行!
还测试了一下lpc1768的io
在100m下 lpc_gpio1->fioset=0xffffffff;
lpc_gpio1->fioclr=0xffffffff;
可以搞到15m
呵呵!!!!
-----------------------------------------------------------------------
我有一个问题,这么高频率,用来干嘛呢?有什么应用需要这么高速度吗? 回复 40楼:我不用这么高频率的 就是看看这NXP 有没有留余量 留了多大然后有些朋友可能需要超频吧
纯粹娱乐性质!呵呵呵呵
既然LPC1769可以名正言顺跑到120M 同系列的也应该有这个潜力的嘛
所以测试一下! 回复37楼:我觉得关于这个中断问题在自带的.s文件里面就定义好了,我们的函数名只要和这里的一样就可以了!
; External Interrupts
DCD WDT_IRQHandler ; 16: Watchdog Timer
DCD TIMER0_IRQHandler ; 17: Timer0
DCD TIMER1_IRQHandler ; 18: Timer1
DCD TIMER2_IRQHandler ; 19: Timer2
DCD TIMER3_IRQHandler ; 20: Timer3
DCD UART0_IRQHandler ; 21: UART0
DCD UART1_IRQHandler ; 22: UART1
DCD UART2_IRQHandler ; 23: UART2
DCD UART3_IRQHandler ; 24: UART3
DCD PWM1_IRQHandler ; 25: PWM1
DCD I2C0_IRQHandler ; 26: I2C0
DCD I2C1_IRQHandler ; 27: I2C1
DCD I2C2_IRQHandler ; 28: I2C2
DCD SPI_IRQHandler ; 29: SPI
DCD SSP0_IRQHandler ; 30: SSP0
DCD SSP1_IRQHandler ; 31: SSP1
DCD PLL0_IRQHandler ; 32: PLL0 Lock (Main PLL)
DCD RTC_IRQHandler ; 33: Real Time Clock
DCD EINT0_IRQHandler ; 34: External Interrupt 0
DCD EINT1_IRQHandler ; 35: External Interrupt 1
DCD EINT2_IRQHandler ; 36: External Interrupt 2
DCD EINT3_IRQHandler ; 37: External Interrupt 3
DCD ADC_IRQHandler ; 38: A/D Converter
DCD BOD_IRQHandler ; 39: Brown-Out Detect
DCD USB_IRQHandler ; 40: USB
DCD CAN_IRQHandler ; 41: CAN
DCD DMA_IRQHandler ; 42: General Purpose DMA
DCD I2S_IRQHandler ; 43: I2S
DCD ENET_IRQHandler ; 44: Ethernet
DCD RIT_IRQHandler ; 45: Repetitive Interrupt Timer
DCD MCPWM_IRQHandler ; 46: Motor Control PWM
DCD QEI_IRQHandler ; 47: Quadrature Encoder Interface
DCD PLL1_IRQHandler ; 48: PLL1 Lock (USB PLL)
DCD USBActivity_IRQHandler ; USB Activity interrupt to wakeup
DCD CANActivity_IRQHandler ; CAN Activity interrupt to wakeup
我不懂汇编那位会汇编的看看 .s文件给我们解释一下具体工作机制
但是我看了一下.s 启动代码在初始化的时候就处理好了,只要我们使能某个中断,然后中断函数名 和启动代码里定义的一样 然后中断时就会自动跳转到相应的函数执行,不再需要入口关键字了 !不知道是不是这样那个看看汇编 然后解释一下! 楼主是个好人 对M3挺感兴趣,楼主还有多的pcb? 回复44楼:http://djbgreen.taobao.com有板 如果想自己搭电路里面有转接板就几元钱成本呵呵!!! 右上角那六个篆字是什么? v good 回复 46楼:“科技改变生活” 请问lz怎么在keil里设置加密?uv4还不怎么会。 回复 49:没有涉及到加密这一块! 非常感谢,顶下! 支持! ----------------------------------------------
█〓██▄▄▄▄▄▄ ●●●
▄▅██████▅▄▃▂
██████████████
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤ 呵呵呵 昨天买了片1752开发板,本来用1758的结果没有只好用这块顶住先! mark 记号,买了片子还没试过。 哈哈哈没事来看看! 可以做出lpc1768+DM9161的开发板,这样会把这个芯片最大限度的发挥出来 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4292499&bbs_page_no=3&bbs_id=9999
mark 59楼 说的对哟其实这款芯片还是有很多 含强大的功能的 支持! 资料很好
冒昧问一句,楼主也姓邓吧? 好东西 回复63楼: 是的我是姓邓 莫非你认识我!!!
呵呵!!! 我有LPC1768+DM9161的板子,程序都写好了.
板子上还可以外扩zigbee模块,外扩了6路全双工485,功能是无敌了
可惜做了个6层板的.没法拿来分享了.成本太高了 回复 66楼:偶尔来解决一下大家的问题 就是最大的分享了
我是个刚刚从学校走出来的人呵呵 很多都不懂哟呵呵
不过我一般习惯一个人找资料解决自己遇到的问题 标记 呵呵没事 来看看!!!! mark 支持,多出些基础教程,初学者非常需要. 定下 回复 71楼会的!!!! http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_602539AKSX6Q.jpg
(原文件名:11.jpg)
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_602540HUTB5T.jpg
(原文件名:22.jpg)
新画的NXP M0的板
支持 LPC1114 LPC1343 我今晚刚订了一板你的板子.NXP的LPC1768最小系统板.【74楼】 dengxiaofeng 天下的人要是资料和教程再多点些就更好了. 回复 75楼:你需要什么资料 联系我就是了我给你找找!!!zdeh726@163.com 回复【76楼】dengxiaofeng天下的人
-----------------------------------------------------------------------
楼主你好,请问一下。
我看到大家说LPC1768和LPC2368的引脚是兼容的。
但是我看到在JTAG中的RTCK引脚不同;
在你的板子中LPC1768的RTCK是接3.3V上拉电阻。
在另外一块LPC2368板子中,RTCK是接跳线下拉电阻到地。
请问能给初学者分析一下吗?谢谢了
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_603682HWKLHH.JPG
(原文件名:3333.JPG)
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_603684I0OTLT.JPG
(原文件名:222.JPG) 请问能分析一下吗?谢谢了 上面两个JTAG图的差异 回复 80楼:我的LPC1768使用的SW模式,没有使用JTAG 模式
至于 RTCK 连接区别什么的请看下图:
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_604118OO1HGV.jpg
(原文件名:QQ截图未命名.jpg)
这是手册上的解释 我来顶下那个“电子让生活更美好” 回复82楼:谢谢了呵呵 好人啊 谢谢楼上的各位分享 回复85楼 客气了 mark谢谢 mark! 呵呵 怎么没有adc的程序啊 keil的例程里有AD程序自己看寄存器写一个就是了!!!没时间把所有的代码都整理 出来哟 顶一下,老乡 哈哈哈谢谢!!! Mark 看了半天来了个Mark mark 居然还是个 MARK 回复【98楼】dengxiaofeng 天下的人
-----------------------------------------------------------------------
好吧,顶一下你。知道我是谁不? mark! 哈哈又是一个MARK 谢谢楼主分享精神第一个附件不能下载 请检查下 对lpc1768启动后的代码段或者数据段这些东西很是搞不清楚不知道哪位大侠有没有详细的见解啊