打印
[ZLG-ARM]

决定暂时让LPC2368隐居深山野岭,等他“修炼成仙”才让他重

[复制链接]
楼主: 汽车电子
手机看帖
扫描二维码
随时随地手机跟帖
21
汽车电子|  楼主 | 2007-1-22 15:34 | 只看该作者 回帖奖励 |倒序浏览

boy123那个例程是在网上下载的吧,所有内设功能模块都有的

   网站我忘了,我很久之前就下载了

使用特权

评论回复
22
hotpower| | 2007-1-22 18:22 | 只看该作者

boy123个的程序少很多文件,不能编译

使用特权

评论回复
23
汽车电子|  楼主 | 2007-1-22 19:44 | 只看该作者

LPC2368的一致性非常差呀

   一样的程序,写进两个一样的板子,执行效果是不一样的
  
   一个快一个慢,一个没那么稳定

使用特权

评论回复
24
violit| | 2007-1-22 20:41 | 只看该作者

谢谢~~

今天发现了问题:
对于LPC2132这么写没有问题:
#define    IRQ_UART0    6
  VICVectAddr4  = (int32)int_serial0;
  VICVectCntl4  = 0x20|IRQ_UART0;
  VICIntEnable |= 1<<IRQ_UART0;

对于LPC2364要改为这样才能正确执行中断:
  VICVectAddr6  = (int32)int_serial0;
  VICVectCntl6  = 0x20|IRQ_UART0;
  VICIntEnable |= 1<<IRQ_UART0;

使用特权

评论回复
25
wangshujun| | 2007-1-22 21:09 | 只看该作者

看看,lpc23xx的头文件,是不是增加了定义

使用特权

评论回复
26
boy123| | 2007-1-22 21:44 | 只看该作者

重新再上串口的程序。。

不好意思,,下午搞错了。
12M晶振,115200波特率 80%会出错。
57600时不会。。怪事。。我现在只是跑跑相关的硬件看看是否正常。接着是网络。。。

是从网上下载的。

相关链接:https://bbs.21ic.com/upfiles/img/20071/2007122214344115.rar

使用特权

评论回复
27
soso| | 2007-1-22 23:04 | 只看该作者

关注

使用特权

评论回复
28
汽车电子|  楼主 | 2007-1-23 00:03 | 只看该作者

是的,有32个中断,对应32个中断向量寄存器

   UART的波特率 115200是没问题的,关键是波特率发生器的输入频率要算对

使用特权

评论回复
29
lpc2000| | 2007-1-23 02:02 | 只看该作者

申请一个yahoo账号,然后去这里申请加入

http://tech.groups.yahoo.com/group/lpc2000/

使用特权

评论回复
30
XZL| | 2007-1-23 09:54 | 只看该作者

violit

应该是中断向量设置的问题,我遇到过

使用特权

评论回复
31
汽车电子|  楼主 | 2007-1-23 17:50 | 只看该作者

我把LPC236x的内部功能模块的驱动放在网上了

   http://www.shawyoo.com 下载中心一栏,驱动来源于网上,未作修改

使用特权

评论回复
32
violit| | 2007-1-23 18:34 | 只看该作者

感谢汽车的资料`~

使用特权

评论回复
33
wangshujun| | 2007-1-24 09:02 | 只看该作者

236x支持波特率的小数分频,理论上波特率可以很精确

12M晶振,115200波特率 80%会出错。
加上小数分频就应该好了

使用特权

评论回复
34
violit| | 2007-1-24 15:51 | 只看该作者

是的~~尽量使用11.0592这类的晶振~~

要不然就要使用小数分频~~Keil的例子就是这样的~

使用特权

评论回复
35
汽车电子|  楼主 | 2007-1-24 16:00 | 只看该作者

没问题呀,我的板子是用12M的晶振,115200bps

   UART之bps是允许有误差的

使用特权

评论回复
36
hotpower| | 2007-1-29 22:34 | 只看该作者

我认为在现行条件下非典估计是有效的方法

可以说我非常深入地研究了LPCARM的中断体系.
菜农对23xx的中断体系的10点请教意见一文.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;               LPC23xx非典FLASHROM的中断向量表架构
                IMPORT  VIC_Vect_Addr0
IRQ_Handler     STMFD   SP!, {R11, R12, LR};真保护R11R12, 假保护LR(用于运算)
;//                LDR     R12, VIC_Vect_Addr   ;取VICVectAddr物理地址
;//                LDR     R12, [R12]        ;取出取VICVectAddr内实际向量中断号(非地址)
                LDR     R12, [PC , #-0x14c];取出取VICVectAddr内实际向量中断号(非地址)
                AND     R12, #0x1f      ;防止32个中断序号越界,在此可再做序号越界处理(可省略)
                LDR     R11, =VIC_Vect_Addr0
                LDR     R12, [R11, R12, LSL #2];散转到用户真正的向量中断地址
                STR     R12, [SP, #0x08];将中断向量地址R12写入事先保存的那个LR空间
                LDMFD   SP!, {R11, R12, PC};恢复R11R12,同时PC跳入中断向量地址执行
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

在这个架构中,进入中断比正常的多了7条ARM指令,但它的可靠性却增加很多,我已论述了很多并经过产品实战批量生产.

最近我在做作业,主要的目的是如何从MCU向ARM过渡.最终我首选了LPC213x/210x系列.

被菜农这么一搞,实在不象话---因为最后ARM比MCU更简单和好用.

通过这个架构,融合了MCU的多中断向量和单中断向量等特点,做到了像PIC的
单中断向量架构的可靠且比其散转迅速,又不失多中断向量的功能明确性.

汽车电子说"中断不稳定"我不太明白...
但是我敢肯定菜农的拦截方式肯定可靠,虽然速度有点损失,但安全和速度选择其一时,前者估计是多数人的选择.

ARM的指令系统非常完美,这是一般MCU和DSP都不如的,他们都要在中断中保护大量的现场数据,而ARM要开销的少得多.

难道MCU的多字节指令集和低速我们都能宽容,那么菜农多7条ARM指令就不对吗???

中断向量表在RAM中可靠还是在FLASH中更可靠这个问题没意思去争论,只能通过事实来说话.
就如一个行业旗手的一位总工不听菜农的意见,将海量数据存放在RAM中用电池维持掉电后的数据不丢失.
由于每天必须开关机一次,维持约10个小时.(电池的容量肯定没问题)
当产品使用后且在干扰强烈的环境下,其惨状我就不列举了~~~

我当初对他说:我们不能像书本上设计产品那样,我们必须考虑安全可靠.
但得到的是:"你们农民知道个什么???我们的产品就只差做到联合国了"...
哈哈~~~说笑了,原话当然不会是这样,但傲慢的劲头是十足的~~~

最后~~~只能后悔没听老农的真心告白~~~

使用特权

评论回复
37
汽车电子|  楼主 | 2007-1-30 00:54 | 只看该作者

我很早之前就加了这段,但效果还是一样

;               LPC23xx非典FLASHROM的中断向量表架构
                IMPORT  VIC_Vect_Addr0
IRQ_Handler     STMFD   SP!, {R11, R12, LR};真保护R11R12, 假保护LR(用于运算)
;//                LDR     R12, VIC_Vect_Addr   ;取VICVectAddr物理地址
;//                LDR     R12, [R12]        ;取出取VICVectAddr内实际向量中断号(非地址)
                LDR     R12, [PC , #-0x14c];取出取VICVectAddr内实际向量中断号(非地址)
                AND     R12, #0x1f      ;防止32个中断序号越界,在此可再做序号越界处理(可省略)
                LDR     R11, =VIC_Vect_Addr0
                LDR     R12, [R11, R12, LSL #2];散转到用户真正的向量中断地址
                STR     R12, [SP, #0x08];将中断向量地址R12写入事先保存的那个LR空间
                LDMFD   SP!, {R11, R12, PC};恢复R11R12,同时PC跳入中断向量地址执行

使用特权

评论回复
38
汽车电子|  楼主 | 2007-1-30 00:57 | 只看该作者

也试过

  直接取VICVectAddr地址的内容,还是一样

使用特权

评论回复
39
jola| | 2007-1-30 10:09 | 只看该作者

那里有lpc2368的开发板卖

如题 

使用特权

评论回复
40
汽车电子|  楼主 | 2007-1-30 10:56 | 只看该作者

在楼顶就说到了:中断后常会复位

   不是丢中断或中断错位。

   不知哪里有“机关”,不确定是K编译的问题还是CPU的问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则