3104|5

12

帖子

0

TA的资源

一粒金砂(中级)

32位周期触发模式编译通过但是LED就是没有反应,纠结中... [复制链接]

各位路过的TX,我是一个入门者,前段时间拿到了TI LM3S 811评估板, 在练习32位周期触发模式,但是LED就是没有反应,纠结中...
其实也是参考黄智伟先生编写的32位ARM微控制器系统设计与实践第四章的例程.
请帮忙看看程序哪儿有问题,编译通过,就是LED无反应. 谢谢啦
#define HWREG(x)   (*((volatile unsigned long*)(x)))  
#define SYSCTL_RCGC1          0x400fe104   //时钟选通控制寄存器,TIMER0选通
#define SYSCTL_RCGC2          0x400fe108   //GPIOC接收时钟并运行
#define SYSCTL_PERIPH_GPIOC   0x00000004
#define SYSCTL_PERIPH_TIMER0  0x00010000   //依据时钟选通控制寄存器RCGCCn位定义

#define TIMER0_BASE           0x40030000
#define TIMER_0_CTL           0x0000000c
#define TIMER_0_CFG           0x00000000
#define TIMER_0_TAMR          0x00000004
#define TIMER_0_IMR           0x00000018
#define TIMER_0_ICR           0x00000024
#define TIMER_0_TAILR         0x00000028

#define TIMER_CTL_TEAN        0x00000001
#define TIMER_CFG_32_BIT_OS   0x00000001
#define TIMER_CFG_32_BIT_PER  0x00000002
#define TIMER_A               0x000000ff
#define TIMER_TIMA_TIMEOUT    0x00000001
#define TIMER_INT_DATA        15000000

#define NVIC_EN0              0xe000e100
#define INT_GPIOA             16
#define INT_TIMER0A           35

#define GPIO_PORTC_BASE       0x40006000
#define GPIO_0_DIR            0x00000400
#define GPIO_0_AFSEL          0x00000420
#define GPIO_0_DATA           0x00000000
#define GPIO_0_DR2R           0x00000500
#define GPIO_0_ODR            0x0000050c
#define GPIO_0_DEN            0x0000051c

#define PINS1                 0x00000020   // GPIO pin 5

__asm void  CPUcpsie (void)
{
 CPSIE   I
 BX LR
}
 
void Timer0A_ISR(void)
{
  HWREG(TIMER0_BASE+TIMER_0_ICR) = TIMER_TIMA_TIMEOUT;
  HWREG(GPIO_PORTC_BASE+(GPIO_0_DATA+(PINS1<<2))) =(HWREG(GPIO_PORTC_BASE+(GPIO_0_DATA)+(PINS1<<2)))^PINS1;
  HWREG(TIMER0_BASE+TIMER_0_CTL)|=TIMER_A&(TIMER_CTL_TEAN);
}

int main(void)
{
 HWREG(SYSCTL_RCGC1)|=SYSCTL_PERIPH_TIMER0 & 0x0ffffffff;
 HWREG(SYSCTL_RCGC2)|=SYSCTL_PERIPH_GPIOC & 0x0ffffffff;

 HWREG(GPIO_PORTC_BASE+GPIO_0_DIR)|=PINS1;           //GPIOPORTC5设置为输出
 HWREG(GPIO_PORTC_BASE+GPIO_0_AFSEL)&=~PINS1;   //GPIOPROTC5定义为普通I/O口
 HWREG(GPIO_PORTC_BASE+GPIO_0_DR2R)|=PINS1;       //2mA驱动
 //HWREG(GPIO_PORTC_BASE+GPIO_0_ODR)|=PINS1;           
 HWREG(GPIO_PORTC_BASE+GPIO_0_DEN)|=PINS1;

 HWREG(GPIO_PORTC_BASE+(GPIO_0_DATA+(PINS1<<2)))=~PINS1;

 HWREG(TIMER0_BASE+TIMER_0_CTL)&=~(TIMER_CTL_TEAN);   //禁止TIMER0
 HWREG(TIMER0_BASE+TIMER_0_CFG)= TIMER_CFG_32_BIT_OS>>24;   //配置GPTMCFG为32为定时器模式,但右移24位why?
 HWREG(TIMER0_BASE+TIMER_0_TAMR)= TIMER_CFG_32_BIT_PER&255;   //配置为周期定时器模式
 HWREG(TIMER0_BASE+TIMER_0_TAILR)= TIMER_INT_DATA /4;   //装载间隔值
 HWREG(TIMER0_BASE+TIMER_0_IMR)|=TIMER_TIMA_TIMEOUT;   //TIMERA0中断使能
 HWREG(TIMER0_BASE+TIMER_0_CTL)|=TIMER_A&(TIMER_CTL_TEAN);   //启动TIMER0
 HWREG(NVIC_EN0)=1<<(INT_TIMER0A-INT_GPIOA);   //使能TIEMER0中断
 CPUcpsie();
 while(1);
}

最新回复

  如果是直接操作寄存器方式,还得注意添加必要的延时处理。  详情 回复 发表于 2011-9-16 11:10

回复
举报

242

帖子

0

TA的资源

纯净的硅(中级)

我记得LM的片子都有蛮大的驱动库的呀,干嘛不直接用呢?

回复

299

帖子

0

TA的资源

纯净的硅(高级)

建议采用lib库的方式,寄存器太多了。

回复

547

帖子

0

TA的资源

纯净的硅(初级)

原帖由 guguo2010 于 2011-9-1 12:07 发表 我记得LM的片子都有蛮大的驱动库的呀,干嘛不直接用呢?

 

就是啊

个人签名嵌入式培训www.51great.org

回复

103

帖子

0

TA的资源

一粒金砂(高级)

分析程序,似乎对IO口定义的时候,缺少一个语句,就是定义为digital格式。详细请参考例程。

回复

2749

帖子

0

TA的资源

裸片初长成(初级)

原帖由 WINKLE 于 2011-9-1 11:51 发表 各位路过的TX,我是一个入门者,前段时间拿到了TI LM3S 811评估板, 在练习32位周期触发模式,但是LED就是没有反应,纠结中...其实也是参考黄智伟先生编写的32位ARM微控制器系统设计与实践第四章的例程.请帮忙看看程序哪儿 ...

 

如果是直接操作寄存器方式,还得注意添加必要的延时处理。


回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表