3985|5

62

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

LM3S中断程序调通了! [复制链接]

   经过奋斗,LM3S811的中断程序调通了!


** Created By:                    hu_hejiaun lai_qingmin
** Created date:                  2011-10-20
** Version:                       v1.0
** Descriptions:                  程序正常运行时,点亮四个LED指示灯。当A0-A3按键按下时,进入中断,分别熄灭相应的LED指示
**                       灯。按键放开后,又点亮LED指示灯。
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
#include "hw_memmap.h"
#include "hw_types.h"
#include "hw_ints.h"
#include "sysctl.h"
#include "systick.h"
#include "gpio.h"
#include "interrupt.h"
unsigned long Sysclk = 12000000UL;
#define KEY1   GPIO_PIN_0                                               /*  定义KEY1  */
#define LED3   GPIO_PIN_0                                               /*  定义LED3 */
#define KEY2   GPIO_PIN_1                                               /*  定义KEY1  */
#define LED4   GPIO_PIN_1                                               /*  定义LED3 */
#define KEY5   GPIO_PIN_2                                               /*  定义KEY1  */
#define LED6   GPIO_PIN_0                                               /*  定义LED3 */
#define KEY7   GPIO_PIN_3                                               /*  定义KEY1  */
#define LED8   GPIO_PIN_1                                               /*  定义LED3 */

/*********************************************************************************************************
** 函数原形:void GPIO_Port_E_ISR(void)
** 功能描述:首先清除中断标志,再点亮LED3。
** 说明:    用KEIL软件时,在Startup.S中添加该中断函数名
** 参数说明:无
** 返回值:  无
*********************************************************************************************************/
void GPIO_Port_A_ISR(void)
{
   long IntStatus;
 
  IntStatus = GPIOPinIntStatus(GPIO_PORTA_BASE, true);                  /*  获取中断状态     */
     if(IntStatus&KEY1)
  {
 GPIOPinIntClear(GPIO_PORTA_BASE, KEY1);                             /*  清除中断标志                */
    GPIOPinWrite(GPIO_PORTB_BASE, LED3, 0x00);                         /*  点亮LED3 */ 
 SysCtlDelay(1000* (Sysclk / 3000));
 GPIOPinWrite(GPIO_PORTB_BASE, LED3, 0x01); 
   }
   if(IntStatus&KEY2)
  {
 GPIOPinIntClear(GPIO_PORTA_BASE, KEY2);                             /*  清除中断标志                */
    GPIOPinWrite(GPIO_PORTB_BASE, LED4, 0x00);                         /*  点亮LED3 */ 
 SysCtlDelay(1000* (Sysclk / 3000));
 GPIOPinWrite(GPIO_PORTB_BASE, LED4, 0x01); 
   } 
   if(IntStatus&KEY5)
  {
 GPIOPinIntClear(GPIO_PORTA_BASE, KEY5);                             /*  清除中断标志                */
    GPIOPinWrite(GPIO_PORTD_BASE, LED6, 0x00);                         /*  点亮LED3 */ 
 SysCtlDelay(1000* (Sysclk / 3000));
 GPIOPinWrite(GPIO_PORTD_BASE, LED6, 0x01); 
   }  
  
    if(IntStatus&KEY7)
  {
 GPIOPinIntClear(GPIO_PORTA_BASE, KEY7);                             /*  清除中断标志                */
    GPIOPinWrite(GPIO_PORTD_BASE, LED8, 0x00);                         /*  点亮LED3 */ 
 SysCtlDelay(1000* (Sysclk / 3000));
 GPIOPinWrite(GPIO_PORTD_BASE, LED8, 0x01); 
   } 
  
  
             
}

/*********************************************************************************************************
** 函数原形:int main(void)
** 功能描述:熄灭LED3,并等待按键的中断。
** 参数说明:无
** 返回值:  0
*********************************************************************************************************/
int main(void)
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);                        /*  使能GPIO PB口               */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);                        /*  使能GPIO PE口               */
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
   
 GPIODirModeSet(GPIO_PORTA_BASE, KEY1|KEY2|KEY5|KEY7, GPIO_DIR_MODE_IN);            /*  设置连接KEY1的PE2为输入     */
    GPIODirModeSet(GPIO_PORTB_BASE, LED3|LED4, GPIO_DIR_MODE_OUT);           /*  设置连接LED3的PB6为输出     */
 GPIODirModeSet(GPIO_PORTD_BASE, LED6|LED8, GPIO_DIR_MODE_OUT);
    GPIOPadConfigSet(GPIO_PORTA_BASE, KEY1|KEY2|KEY5|KEY7,                       /*  设置KEY1的驱动强度和类型    */
                     GPIO_STRENGTH_4MA,                        /*  4mA的输出驱动强度           */
                     GPIO_PIN_TYPE_STD);                    /*  设置为推挽管脚              */
                    
    GPIOPadConfigSet(GPIO_PORTB_BASE, LED3|LED4,                       /*  设置LED3的驱动强度和类型    */
                     GPIO_STRENGTH_4MA,                        /*  4mA的输出驱动强度           */
                     GPIO_PIN_TYPE_STD);                    /*  设置为推挽管脚              */
 GPIOPadConfigSet(GPIO_PORTD_BASE, LED6|LED8,                       /*  设置LED3的驱动强度和类型    */
                     GPIO_STRENGTH_4MA,                        /*  4mA的输出驱动强度           */
                     GPIO_PIN_TYPE_STD);                    /*  设置为推挽管脚              */

                                                                       
    GPIOIntTypeSet(GPIO_PORTA_BASE, KEY1|KEY2|KEY5|KEY7, GPIO_LOW_LEVEL);              /*设置KEY1中断的触发方式为低电平触
                                                                          发                            */ 
    GPIOPinIntEnable(GPIO_PORTA_BASE, KEY1|KEY2|KEY5|KEY7);                   /*  使能KEY1中断                */
    IntEnable(INT_GPIOA);                                 /*  使能GPIO PE 口中断          */
  IntMasterEnable();

    while (1) {
        GPIOPinWrite(GPIO_PORTB_BASE, LED3|LED4, 0x03);   /*  熄灭LED3  */
  GPIOPinWrite(GPIO_PORTD_BASE, LED6|LED8, 0x03);                
    }
    /*  return 0;  */
}
/*********************************************************************************************************
 END FILE
*********************************************************************************************************/

最新回复

  详情 回复 发表于 2012-6-20 14:41
 
点赞 关注

回复
举报

2751

帖子

0

TA的资源

裸片初长成(初级)

沙发
 

原帖由 qwertyuiop11111 于 2011-10-20 11:27 发表    经过奋斗,LM3S811的中断程序调通了! ** Created By:                    hu_hejiaun lai_qingmi ...

看得出楼主心情的喜悦,注释那些都没来得及改呢。

 
 

回复

130

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
哈哈,我也是刚调成功一个中断。只有像我这样的新手才能理解楼主当时调成功后的心情。祝福楼主再接再厉,也祝福我自己尽快上手LM3S9B96,
 
 
 

回复

45

帖子

1

TA的资源

一粒金砂(中级)

4
 

回复 沙发 David_Lee 的帖子

要用中断的话是不是还要修改startup.s里的中断向量表呢?
 
 
 

回复

424

帖子

0

TA的资源

纯净的硅(高级)

5
 
原帖由 xupz123 于 2011-12-13 19:28 发表
要用中断的话是不是还要修改startup.s里的中断向量表呢?

是要添加中断ISR的
 
 
 

回复

1万

帖子

16

TA的资源

版主

6
 

写得不错,顶

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表