发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
[讨论] 【高手问答】第8期——社区之星李工为你的ARM问题解惑
2014-8-18 11:45:51  8126 ARM
分享
Elecfans论坛高手问答第8期
社区之星李工为你的ARM问题解惑
        一周一期的高手问答,又在周一与大家相见了。本期(8.18~8.25)的主题是与ARM相关的问答。我们请到了四年多工作嵌入式工作经历的李工。
        李工原名:李豪龙,论坛用户名:lihaolongli(ARM版主)。
   
李工的自述:
       我从事LED显示控制到现在,主要做嵌入单片机编程,用ARM的单片机多一些,
       四年前,我接触的第一个第一电子论坛,就是电子发烧友,说在这里,我要感谢这个论坛,在我作为初学者时,给我很大帮助,做技术的人,一般都很低调,越是高手,越是如此,所以,那些还能活跃在论坛上的高手,真的挺不容易的,这种乐于分享,帮助他人的人值的敬佩。
        很多时候,我们的知识来源于网络,来源于众人的结晶,我们也时常怀着一颗感恩的心,回馈于网络。(技术部要是能在论坛提供点赞功能,小编会毫不犹豫的按下,狂点赞。)
   
  
    ARMLI1.gif
  

      假如你在为地址问题、指令问题、架构等等苦恼的话!!!!
      或许你可以在本帖下面,跟帖+并@lihaolongli李工,说不定你的问题在下个楼层或是下一页的楼层会有一个指引方向给你,或者是问题被解决了。

       Elecfans高手问答,根据主题,回帖提问,解答你的疑惑。
社区高手招募
      不限专业领域、不限技术方向,只要你是一个有活力并乐于分享的开发者,只要你愿意把自己的经验收获分享给大家,帮助众多从业者共同学习、共同进步,我们就欢迎你来做客社区高手问答。
      联系方式:pengjiali@elecfans.com。快来联系小编吧!
————————————————————————————————————————
**********************问答精华*********************

0
2014-8-18 11:45:51   评论 分享淘帖
48 个讨论
版主 版主 支持一个 希望以后能给我们带来更多的ARM知识分享!
2014-8-18 11:57:30 评论

举报


LPC1768的定时器定时精度在手册上并没有具体给出,但是附带例程上的程序初始化是这样的:
void timer0Init (void)
{
    T0TCR  = 0x02;
    T0IR   = 1;
    T0CTCR = 0;
    T0TC   = 0;
    T0PR   = 0;
    T0MR0  = FPCLK/2;                                                   /* 0.5S中断1次                  */
    T0MCR  = 0x03;                                                      /* 匹配后产生中断               */
   
    T0TCR  = 0x01;                                                      /* 启动定时器                   */
}
        其中外设时钟频率FPCLK=24MHz(晶振是12MHz),PR=0,所以延时时间是1/FPCLK*(PR+1)*(MR0+1)约等于0.5S。
是不是意味着这个定时器的精度就是将PR和MR的值取最低为0,得到精度为1/24微秒呢??
        我想用这个定时器实现定时然后中断在DA管脚输出一个模拟值,能够达到0.1微秒输出一个点是预期想要达到的效果,但是每次调整PR和MR值时最低差不多是0.5微秒就到极限了,并且输出的模拟值经DA转换后还存在波形重叠等现象,到底该如何解决这个问题呢?能不能单独的将数组存放在一个数据存储器中,然后定时0.1微秒中断从数据存储器中取出一个数送到DA管脚??大神们有没有什么办法?谢谢了。

        我用的C语言编程,KEIL开饭环境,自己想到的原因也就是程序进出中断函数也需要时间,可能是ns级别,所以导致输出波形重叠啥的,,,别的原因就想不出来了,,,,@lihaolongli 求指导
2014-8-18 17:18:43 评论

举报

LPC2294的P0.1和P0.0作为串口接收单片机发来的按键值keynum(0x01,0x02......),不知道程序哪里有问题,1)单片机发出来的数据用串口调试助手可以收到,为什么ARM收不到,2)还有就是U0FCR 设置为触发点为1个字节对不对,按键值在单片机定义的是char型?3)单片机发给串口调试助手比如10是0A,11是0B,那么ARM接收到也是这样吗?由于才接触ARM希望指导下@lihaolongli 。band为9600,单片机也是9600
void UART0_Ini(uint32 baud)
{  
        uint32  bak;

           PINSEL0 = PINSEL0 | 0x00000005;        //使用P0.0-TXD(UART0)和P0.1-RXT(UART0)

           U0LCR = 0x83;                        // DLAB位置1
           bak = (Fpclk >> 4) / baud;
           U0DLM = bak >> 8;
           U0DLL = bak&0xff;

           U0LCR = 0x03;                        //字长选择8bit,清DLAB,无奇偶校验;
           U0FCR = 0x01;                        // 使能FIFO,设置触发点为1字节,并复位RXFIFO
           U0IER = 0x01;                        // 允许RBR中断,即接收中断

    //设置中断允许
           VICIntSelect = 0x00000000;           // 设置所有通道为IRQ中断
          VICVectCntl1 = 0x26;                 // UART0中断通道分配到IRQ slot 1,即优先级second
           VICVectAddr1 = (uint32)IRQ_UART0;    // 设置UART1向量地址
           VICIntEnable = (1<<6);           // 使能UART0中断

}

void   __irq IRQ_UART0(void)
{  
        uint8 i;
        uart0=1;
         if( (U0IIR&0x0F)==0x04)        
         {//接收字节数达到接收FIFO中的出发点(RDA)中断
        
                 keynum = U0RBR;
         }
         else
         {//接收超时(CTI)中断
                 U0FCR=0XC3;                                //bit2 = 1,清空UARTn接收FIFO,并使指针逻辑复位

         }
         VICVectAddr = 0x00;                // 中断处理结束
}
2014-8-18 17:19:38 评论

举报

我用TQ2440开发板和我的虚拟机链接,能ping的通,但是就是mount不上,nfs配置好了,桥接也选上了,linux和windows的防火强也都关闭了,可就是mount不上,请问这是什么原因,该怎么去解决?@lihaolongli
2014-8-18 17:22:58 评论

举报

本人目前用IAR和JLINK调试arm7的程序,但是在main函数中调用涉及寄存器配置的子函数,变出现问题:在SWI-handler或者是
       region$$table$$limit...+3symbols not displayed
       0x498:oxeafffffe b abort_handler
      这两个中断里均无法跳出。
      但是调用如下子函数:
      void aa(int b)
     {
           int c=0;
           c += b;
      }
      则不出现问题。
      求大神@lihaolongli 帮忙!
2014-8-18 17:23:56 评论

举报

我不小心用了A3引脚输出方波,发现下载线中也有A3引脚,第一遍下进去了,第二遍怎么都下不进去了,怎么办?
2014-8-18 17:25:32 评论

举报

我用的是奋斗STM32开发板,最近在学习RTC和EXTI的时候,仿照例程做了一个定时器程序,开发板上用两个LED分别表示秒中断和定时时间到达,四个按键:K1的功能是开始设置和结束设置,走的是EXTI线5,按一下开始设置,再按一下将计数值写入Alarm寄存器;K2的功能是当前时钟加1分钟,走的是EXTI线2;K3的功能是已设定的时钟减一分钟,走的是EXTI线3;K4的功能是取消设置,走的是EXTI线6。

可是现在除了表示秒中断的LED正常闪烁外,按其他功能键似乎都没有作用,按下K1后秒中断的LED可能会长亮或长暗。我想用JLINK Debug,可是根本打不了断点。

我想请教一下:1)程序里面用到了6个中断(两个RTC中断和4个EXTI中断),它们的NVIC优先级应该如何设置?2)为什么打断点根本没用?3)程序的确也在跑,几个功能键似乎不起作用,问题可能出在哪儿?

敬请赐教@lihaolongli
2014-8-19 10:59:20 评论

举报

ARM中I2c初始化问题,求@lihaolongli 指导:
void I2C_Init(uint32 fi2c)
{
       if(fi2c>4000)  fi2c = 400000;
       PINSEL0 = (PINSEL0&0xFFFFFF0F) | 0x50;
       I2SCLH = (Fqclk/fi2c + 1) / 2;     //这一行中为什么加一  
       I2SCLL = (Fqclk/fi2c) / 2;
       //位频率公式:位频率 = Fpclk / (I2SCLH + I2SCLL)
       I2CONCLR = 0x2C;
       I2CONSET = x040;
      ........
}
2014-8-19 11:02:47 评论

举报

小弟在设置SCU 模块时发现器第二个寄存器“SCU Configuration Register” 是只读属性,我们需要在该寄存器中设置哪几个cpu核需要进行一致性保护。但该寄存器是只读属性。是SCU的bug还是我使用的方法不对?@lihaolongli
2014-8-19 14:12:22 评论

举报


FM24C64和EEPROM  AT24C04 在读写上有什么区别  我用的是LPC1778.知道的,请指教。谢谢。@lihaolongli
2014-8-19 14:13:04 评论

举报

望有前辈指点
之前都是在公司XP的机子
学习的时候下载都没问题
台式机嘛
直接使用串口就可以了
回宿舍只能用笔记本了
买了一条U转串的CH340线
由于是64位机子
我就安装了一个win7 32位的虚拟机
在虚拟机里安装了友善之臂的下载驱动和这条U转串的驱动
可以看得到U转串的com
但是看不到友善之臂下载在com里
然后就是DNW的问题了
有时候可以可以看到usb:ok
但是我一按复位
usb就变usb:x了。。。。。。
这样完全不行用啊
串口可以显示连接上
有没有前辈遇到过这种问题?
求指点迷津
2014-8-19 14:14:07 评论

举报


作为一个小白,想问几个问题:
1.用jlink进行debug时,下载程序到哪里了?在链接脚本中设置的地址和程序实际运行的地址有什么关系?
2.禁止MMU、关闭看门狗、设置SVC模式之后是不是可以直接操作I/O口的寄存器而不必须初始化时钟?
2014-8-19 14:14:42 评论

举报

来打酱油 看看的
2014-8-19 14:16:52 评论

举报


k60下载线引脚A3我不小心占用了,导致j-link一直都下不进去程序,怎么办?
2014-8-19 14:17:51 评论

举报

驱动gt818发现的问题:1、不能不停的查询0x712地址,中间等待时间需要200ms以上
2、不能保存按键记录,(比如:按下按键,等一段时间再读取0x712时 居然按键个数(nibble)为零)
3、中断不停的产生,还很有规律。。。(就算我不进行触摸 把0x721到0x748的值全读一遍, 还是会有周期性的中断产生)
我的配置数据参考android平台移植文章的数据写的

怎么回事 有人知道么?

2014-8-19 14:19:10 评论

举报


下载LCD驱动到开发板上出现failed to find bootloader framebuffer,请问是什么原因造成的呢
2014-8-19 14:20:02 评论

举报

lique 发表于 2014-8-18 17:22
我用TQ2440开发板和我的虚拟机链接,能ping的通,但是就是mount不上,nfs配置好了,桥接也选上了,linux和w ...

这个问题遇到多次,无非就是防火墙和配置的问题,重新确认是否完全关闭了windos和虚拟机的防火墙,确认windos、虚拟机和开发板三者均可相互ping通,确认nfs配置文件正确,基本就可解决该问题
2014-8-20 17:28:55 评论

举报

tulin 发表于 2014-8-19 14:20
下载LCD驱动到开发板上出现failed to find bootloader framebuffer,请问是什么原因造成的呢
...

尽可能把问题描述详细些吧,起码,把你所使用的环境告诉大家吧?比如,用的什么开发板?什么片子?
2014-8-20 18:00:15 评论

举报

Elecfans管家 发表于 2014-8-18 11:57
版主 版主 支持一个 希望以后能给我们带来更多的ARM知识分享!

不好意思,来晚了,谢谢大家捧场
2014-8-20 18:00:57 评论

举报

撰写讨论

你正在撰写讨论

如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

123下一页
发讨论
关闭

站长推荐 上一条 /5 下一条

快速回复 返回顶部 返回列表