关于点亮LED的小问题

[复制链接]
3508|16
 楼主| Mars.CN 发表于 2012-10-11 17:20 | 显示全部楼层 |阅读模式
刚学ARM,裸奔中读《ARM处理器裸机开发实战》,书中错误超多
测试LED的时候遇到问题,按照书上写的去做,却点不亮,自己查找原因,未能发现,各位能否帮忙看看

led.c
  1. /**************************************
  2. led.c
  3. 控制LED灯的亮灭
  4. **************************************/

  5. #include "led.h"
  6. #include "2440addr.h"

  7. /**************************************
  8. 初始化LED灯,使LED1(GPB5)为可用状态,并阻断LED灯的显示
  9. **************************************/
  10. void Led_Init(void)
  11. {
  12.         rGPBCON &= ~(3<<10);                //清除GPB5的控制模式
  13.         rGPBCON |= (1<<10);                        //设置GPB5的控制模式为输出模式
  14.         rGPBUP &= ~(1<<5);                        //设置GPB5的上拉电阻为使能状态
  15.         rGPBDAT |= (1<<5);                        //设置GPB5为高定平状态
  16. }

  17. /**************************************
  18. 打开LED1
  19. **************************************/
  20. void Led1_On(void)
  21. {
  22.         rGPBDAT &= ~(1<<5);                        //设置GPB5为低电平,其他位不变
  23. }

  24. /**************************************
  25. 关闭LED1
  26. **************************************/
  27. void Led1_Off(void)
  28. {
  29.         rGPBDAT |= (1<<5);                        //设置GPB5为高电平,其他位不变
  30. }



led.h
  1. /**************************************
  2. led.h
  3. 控制LED灯的亮灭的头文件
  4. **************************************/

  5. #ifndef _LED_H_
  6. #define _LED_H_

  7. extern void Led_Init(void);                //初始化LED
  8. extern void Led1_On(void);                //打开第一个LED
  9. extern void Led1_Off(void);                //关闭第一个LED

  10. #endif




Main.c
  1. /**************************************
  2. Main.c
  3. 启动文件
  4. **************************************/
  5. #include "led.h"

  6. int Main()
  7. {
  8.         Led_Init();
  9.         while(1)
  10.         {
  11.                 Led1_On();
  12.         }
  13.         return 0;
  14. }




Debug单步的时候虽然进入了方法里,但是好像方法里的内容没有执行
 楼主| Mars.CN 发表于 2012-10-11 17:31 | 显示全部楼层
顺便说一句,我用的是TQ2440开发板,LED的接法没有问题,实在GPB5上
NE5532 发表于 2012-10-11 20:36 | 显示全部楼层
数扔一边,把数据手册端口章节重新读一遍。
 楼主| Mars.CN 发表于 2012-10-12 08:54 | 显示全部楼层
确实重读了一遍,木有问题,怀疑前面的启动函数是不是有什么问题?
阿南 发表于 2012-10-12 09:32 | 显示全部楼层
Debug单步?楼主你是在用仿真器调试吗?用的是ADS的AXD?
你在单步调试时,把它设置成混合模式后帖图上来,我看一下代码地址和汇编的结果
 楼主| Mars.CN 发表于 2012-10-16 09:53 | 显示全部楼层
5# 阿南


相当奇怪,如果我用数组,只要改变了时钟频率,亮的灯就不一样,没改变一次就变化一次,至今无解
但是AXD一切正常
sedatefire 发表于 2012-10-16 10:52 | 显示全部楼层
5# 阿南  


相当奇怪,如果我用数组,只要改变了时钟频率,亮的灯就不一样,没改变一次就变化一次,至今无解
但是AXD一切正常
Mars.CN 发表于 2012-10-16 09:53

灯悬空,示波器抓波看看
你肯定哪里搞错了
sedatefire 发表于 2012-10-16 10:52 | 显示全部楼层
只要改变了时钟频率,亮的灯就不一样
这个闻所未闻
qQ191727779 发表于 2012-10-16 11:17 | 显示全部楼层
本帖最后由 qQ191727779 于 2012-10-24 09:14 编辑

自己重新写个,我之前写的裸机好似20行左右的代码
 楼主| Mars.CN 发表于 2012-10-16 11:57 | 显示全部楼层
8# sedatefire
我也很纳闷,为啥这个跟时钟还有关
如果我把位移直接写在方法里面,不用变量的话,一点问题没有,一旦用到变量就SB了
可能和启动函数有关,以下是我的启动函数


  1. GET option.inc
  2. GET 2440addr.inc
  3. GET memcfg.inc

  4. IMPORT Main
  5.     CODE32
  6.     AREA Init,CODE,READONLY
  7.     ENTRY     
  8.      ;初始化LOCKTIME寄存器
  9.      LDR R0 , =LOCKTIME
  10.      LDR R1 , =0xFFFFFF
  11.      STR R1 , [R0];
  12.      
  13.      ;设置CLKDIV的比值为1:2:4
  14.      LDR R0 , =CLKDIVN
  15.      LDR R1 , =CLKDIV_VAL
  16.      STR R1 , [R0]  
  17.      
  18.      ;设置时钟频率,否则时钟显示混乱
  19.      ;Fin=12.0MHz Fout=200MHz
  20.      LDR R0 , =MPLLCON
  21.      LDR R1 , =((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV)
  22.      STR R1 , [R0]
  23.      
  24.      LDR R0, =0x53000000
  25.      MOV R1, #0x0
  26.      STR R1, [R0]
  27.      LDR SP, =1024 * 4
  28.      BL Main
  29. main_loop
  30.      B main_loop
  31.     END

hyminzhu 发表于 2012-12-3 15:36 | 显示全部楼层
duhemayi 发表于 2012-12-4 14:29 | 显示全部楼层
代码呀,看得头痛
zf_015820 发表于 2012-12-5 12:48 | 显示全部楼层
应该是软件没有写好,重新按照自己的逻辑写一个,先控制一个灯,再加。。。。。。;慢慢你能力强了,也知道了原因;程序 这个东西,是要自己搞的
江枫渔火 发表于 2012-12-6 18:33 | 显示全部楼层
板子卖么?便宜点,给我也玩玩~没学单片机,能玩么
21IC之星 发表于 2012-12-6 18:45 | 显示全部楼层
kulas 发表于 2012-12-6 22:32 | 显示全部楼层
看了程序真的服了,自己还是把自己的程序好好屡屡吧
像孩子一样先从匍匐前进的爬行开始,别怕简单,就怕
你好高骛远,别急躁慢慢,把程序的思路好好缕下,自己
就能看出来问题的,并且能记住,多思考
shirenyuled 发表于 2013-3-13 23:21 | 显示全部楼层
你们讲的都是控制方面的,有没有销售方面的朋友呀加下QQ412081085,特别是食人鱼LED方面的求指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

43

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部