uhhznb

    1. 看看,谢谢
    2. 【电子书】 The Definitive Guide to the Cortex-... 99/19295 微控制器 MCU 2011-10-07
      看看了,谢谢楼主分享!
    3. 末尾连锁 11/5008 微控制器 MCU 2011-10-01
      因为key1的次优先级比key2高,我是先按key2,led5开始闪灯,未等到闪到100次,按下key1,led4就开始闪了。
    4. 末尾连锁 11/5008 微控制器 MCU 2011-10-01
      楼上理解有误,我是这个疑问。GPIOA 和 GPIOB 优先圾在同一个组,A 的次优先级比 B 要高,当处理b中断时,产生a中断,理论上应该是实现末尾连锁功能,但是实际上a中断却可以抢占了b中断,不知道为何原因?我是在lm3s811上调试的,单步运行正常,但是全速运行就出现这种怪现象。 [ 本帖最后由 uhhznb 于 2011-10-1 18:01 编辑 ]
    5. 末尾连锁 11/5008 微控制器 MCU 2011-09-30
      程序中key1和key2应该实现末尾连锁功能,但是实际中key1中断却可以抢占key2的中断,这是为什么呀? GPIOPinIntEnable(GPIO_PORTA_BASE, KEY1);                                        /*  使能KEY1中断                */     GPIOPinIntEnable(GPIO_PORTB_BASE, KEY2);                                        /*  使能KEY2中断                */     GPIOPinIntEnable(GPIO_PORTC_BASE, KEY3);                                        /*  使能KEY3中断                */            IntEnable(INT_GPIOA);                                               /*  使能GPIOA中断               */     IntEnable(INT_GPIOB);                                               /*  使能GPIOB中断               */       IntEnable(INT_GPIOC);                                               /*  使能GPIOC中断               */            IntPrioritySet(INT_GPIOA, 2
    6. 末尾连锁 11/5008 微控制器 MCU 2011-09-30
      但是我调试周立功程序单步运行末尾连锁正常,直接运行就出现a(key1)会抢断b(key2)的怪现象,谁能帮我解释下: /****************************************Copyright (c)**************************************************** **                            Guangzhou ZHIYUAN electronics Co.,LTD. **                                       **                                 http://www.embedtools.com ** **--------------File Info--------------------------------------------------------------------------------- ** File name:               IntDome1.c ** Latest modified Date:    2007.11.23 ** Latest Version:          V1.0 ** Descriptions:            中断优先级实验 ** **-------------------------------------------------------------------------------------------------------- ** Created by:              Kang qinhua ** Created date:            2007.11.23 ** Version:                 V1.0 ** Descriptions:            The original version ** **-------------------------------------------------------------------------------------------------------- ** Modified by:             ** Modified date:            ** Version:                  ** Descriptions:             ** *********************************************************************************************************/ #include "hw_types.h" #include "hw_memmap.h" #include "hw_ints.h" #include "hw_nvic.h" #include "interrupt.h" #include "sysctl.h" #include "gpio.h" #define KEY1   GPIO_PIN_4                                                                                                /*  设置PA4口为KEY1                    */ #define KEY2   GPIO_PIN_4                                                                                                /*  设置PB4口为KEY2                    */ #define KEY3   GPIO_PIN_4                                               /*  设置PC4口为KEY3                    */ #define LED3   GPIO_PIN_6                                                                                                /*  设置PB6口为LED3                    */ #define LED4   GPIO_PIN_5                                                                                                /*  设置PA5口为LED4                    */ #define LED5   GPIO_PIN_5                                                                                                /*  设置PB5口为LED5                    */ #define LED6   GPIO_PIN_5                                                                                                /*  设置PC5口为LED6                    */ /********************************************************************************************************* ** Function name:         delay ** Descriptions:          延时函数 ** input parameters:      t,延时时间常数 ** output parameters:     无 ** Returned value:        无 *********************************************************************************************************/ void delay (int  t) {     for ( ; t; --t); } /********************************************************************************************************* ** Function name:         GPIO_Port_A_ISR ** Descriptions:          GPIOA中断函数 **                        用KEIL软件时,在Startup.S中添加该中断函数名 ** input parameters:      无 ** output parameters:     无 ** Returned value:        无 *********************************************************************************************************/ void GPIO_Port_A_ISR (void) {     unsigned long i = 0;     GPIOPinIntClear(GPIO_PORTA_BASE, KEY1);                             /*  清除中断标志                */         for ( i = 100; i > 0; i--) {                 GPIOPinWrite(GPIO_PORTA_BASE, LED4, ~GPIOPinRead(GPIO_PORTA_BASE, LED4));                 delay(200000);         } } /********************************************************************************************************* ** Function name:         GPIO_Port_B_ISR ** Descriptions:          GPIOB中断函数 **                        用KEIL软件时,在Startup.S中添加该中断函数名 ** input parameters:      无 ** output parameters:     无 ** Returned value:        无 *********************************************************************************************************/ void GPIO_Port_B_ISR (void) {     unsigned long i = 0;     GPIOPinIntClear(GPIO_PORTB_BASE, KEY2);                             /*  清除中断标志                */         for ( i = 100; i > 0; i--) {             GPIOPinWrite(GPIO_PORTB_BASE, LED5, ~GPIOPinRead(GPIO_PORTB_BASE, LED5));                 delay(200000);         } } /********************************************************************************************************* ** Function name:         GPIO_Port_C_ISR ** Descriptions:          GPIOC中断函数 **                        用KEIL软件时,在Startup.S中添加该中断函数名 ** input parameters:      无 ** output parameters:     无 ** Returned value:        无 *********************************************************************************************************/ void GPIO_Port_C_ISR (void) {     unsigned long i = 0;     GPIOPinIntClear(GPIO_PORTC_BASE, KEY3);                             /*  清除中断标志                */         for ( i = 100; i > 0; i--) {             GPIOPinWrite(GPIO_PORTC_BASE, LED6, ~GPIOPinRead(GPIO_PORTC_BASE, LED6));                 delay(200000);         } } /********************************************************************************************************* ** Function name:         main           ** Descriptions:          主函数 **                        运行时LED3闪烁 **                        KEY1--GPIOA中断 ,对应于LED4,设置成组优先级为2,次优先级为0 **                        KEY2--GPIOB中断 ,对应于LED5,设置成组优先级为2,次优先级为1 **                        KEY3--GPIOC中断 ,对应于LED6,设置成组优先级为1,次优先级为1 **                        按下KEY1,LED4闪烁;按下KEY2,LED5闪烁;按下KEY3,LED6闪烁; **                        KEY1与KEY2产生末尾连锁,KEY3可抢断KEY1、KEY2,通过LED可以观测结果 ** input parameters:      无 ** output parameters:     无       ** Returned value:        无          *********************************************************************************************************/ int main (void) {     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);                        /*  使能GPIO PA口               */     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);                        /*  使能GPIO PB口               */     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);                        /*  使能GPIO PC口               */ /*********************************************************************************************************   设置KEY1、KEY2、KEY3为输入 *********************************************************************************************************/ /*  GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, KEY1);                  GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, KEY2);         GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, KEY3); */     GPIODirModeSet(GPIO_PORTA_BASE, KEY1, GPIO_DIR_MODE_IN);         GPIODirModeSet(GPIO_PORTB_BASE, KEY2, GPIO_DIR_MODE_IN);         GPIODirModeSet(GPIO_PORTC_BASE, KEY3, GPIO_DIR_MODE_IN); /*********************************************************************************************************   设置LED3、LED4、LED5、LED6为输出 *********************************************************************************************************/ /*  GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, LED3);     GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, LED4);     GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, LED5);         GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, LED6);         */         GPIODirModeSet(GPIO_PORTB_BASE, LED3, GPIO_DIR_MODE_OUT);     GPIODirModeSet(GPIO_PORTA_BASE, LED4, GPIO_DIR_MODE_OUT);         GPIODirModeSet(GPIO_PORTB_BASE, LED5, GPIO_DIR_MODE_OUT);         GPIODirModeSet(GPIO_PORTC_BASE, LED6, GPIO_DIR_MODE_OUT);     GPIOPadConfigSet(GPIO_PORTA_BASE, KEY1 | LED4,                                    /*  设置KEY1的驱动强度和类型    */                      GPIO_STRENGTH_4MA,                                                    /*  4mA的输出驱动强度           */                      GPIO_PIN_TYPE_STD);                                                /*  设置为推挽管脚              */     GPIOPadConfigSet(GPIO_PORTB_BASE, KEY2 | LED5 | LED3,                            /*  设置KEY2的驱动强度和类型    */                      GPIO_STRENGTH_4MA,                                                    /*  4mA的输出驱动强度           */                      GPIO_PIN_TYPE_STD);                                                /*  设置为推挽管脚              */     GPIOPadConfigSet(GPIO_PORTC_BASE, KEY3 | LED6,                                    /*  设置KEY3的驱动强度和类型    */                      GPIO_STRENGTH_4MA,                                                    /*  4mA的输出驱动强度           */                      GPIO_PIN_TYPE_STD);                                                /*  设置为推挽管脚              */     GPIOIntTypeSet(GPIO_PORTA_BASE, KEY1, GPIO_RISING_EDGE);            /*  设置KEY1中断的触发方式为                                                                                 上升沿触发                  */         GPIOIntTypeSet(GPIO_PORTB_BASE, KEY2, GPIO_RISING_EDGE);            /*  设置KEY2中断的触发方式为                                                                                 上升沿触发                  */         GPIOIntTypeSet(GPIO_PORTC_BASE, KEY3, GPIO_RISING_EDGE);            /*  设置KEY3中断的触发方式为                                                                                 上升沿触发                  */     IntMasterEnable();                                                  /*  使能总中断         */     GPIOPinIntEnable(GPIO_PORTA_BASE, KEY1);                                        /*  使能KEY1中断                */     GPIOPinIntEnable(GPIO_PORTB_BASE, KEY2);                                        /*  使能KEY2中断                */     GPIOPinIntEnable(GPIO_PORTC_BASE, KEY3);                                        /*  使能KEY3中断                */            IntEnable(INT_GPIOA);                                               /*  使能GPIOA中断               */     IntEnable(INT_GPIOB);                                               /*  使能GPIOB中断               */       IntEnable(INT_GPIOC);                                               /*  使能GPIOC中断               */            IntPrioritySet(INT_GPIOA, 2
    7. LM3S8962 GPIO 带弱上拉的开漏 16/5990 微控制器 MCU 2011-09-24
      就是不要从51单片机角度看问题,认为弱上拉开漏输入就是高电平,其实刚开始我也没弄明白,不过现在明白了。 我就是用 GPIODirModeSet(GPIO_PORTE_BASE,GPIO_PIN_0,GPIO_DIR_MODE_IN);GPIOPadConfigSet(GPIO_PORTE_BASE,GPIO_PIN_0,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD); 配置的。 [ 本帖最后由 uhhznb 于 2011-9-24 10:59 编辑 ]
    8. LM3S8962 GPIO 带弱上拉的开漏 16/5990 微控制器 MCU 2011-09-21
      我的理解是推挽输入是高电平,开漏输入是低电平,我的4*4键盘矩阵程序中,单步运行调试得出的结论,那个程序我已调试成功了。
    9. lm3s811 矩阵键盘 8/3858 微控制器 MCU 2011-08-29
      程序已经贴出来了, 有谁能帮我看看问题出在哪里吗?
    10. lm3s811 矩阵键盘 8/3858 微控制器 MCU 2011-08-28
      #ifndef KEYBOARD_H#define KEYBOARD_H//定义长标识符成较短的形式#define SysCtlPeriEnable             SysCtlPeripheralEnable#define SysCtlPeriDisable            SysCtlPeripheralDisable#define GPIOPinTypeIn                GPIOPinTypeGPIOInput#define GPIOPinTypeOutOD        GPIOPinTypeGPIOOutputOD //行线使用GPIOB(0-3)1111#define KEYBOARD_LIN_PERIPH        SYSCTL_PERIPH_GPIOB#define KEYBOARD_LIN_BASE           GPIO_PORTB_BASE#define KEYBOARD_LIN_PIN        0x0F                   //列线使用GPIOC(4-7)1111#define KEYBOARD_COL_PERIPH        SYSCTL_PERIPH_GPIOC#define KEYBOARD_COL_BASE           GPIO_PORTC_BASE#define KEYBOARD_COL_PIN       0xF0                             #endif     uchar scanKeyboard(void){  ulong scanValue[20]={0xEE,0xDE,0xBE,0x7E,                     0xED,0xDD,0xBD,0x7D,                     0xEB,0xDB,0xBB,0x7B,                     0xE7,0xD7,0xB7,0x77,                                                                              };  const ulong keyASC[20]={'1','2','3','4',                            '5','6','7','8',                            '9','10','11','12',                            '13','14','15','16',                        };  //定义变量及使能GPIOC和GPIOB    ulong key,temp,temp1,temp2,temp3;SysCtlPeripheralEnable(KEYBOARD_LIN_PERIPH);SysCtlPeripheralEnable(KEYBOARD_COL_PERIPH);//9个引脚全部上拉电阻有效GPIOPadConfigSet(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_OD_WPU);GPIOPadConfigSet(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_OD_WPU);GPIOPinTypeOutOD(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN);        GPIOPinTypeIn(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN);              GPIOPinWrite(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN,0x00);            temp1=GPIOPinRead(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN)& KEYBOARD_COL_PIN;                                   GPIOPadConfigSet(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_OD_WPU);GPIOPadConfigSet(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_OD_WPU);GPIOPinTypeIn(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN);               GPIOPinTypeOutOD(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN);             GPIOPinWrite(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN,0x00);               temp2=GPIOPinRead(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN)& KEYBOARD_LIN_PIN;   temp=temp1 | temp2;                   if(temp!=0xFF)                                           {                SysCtlDelay(13*(SysCtlClockGet()/3000));    GPIOPadConfigSet(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_OD_WPU);    GPIOPadConfigSet(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_OD_WPU);    GPIOPinTypeOutOD(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN);         GPIOPinTypeIn(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN);              GPIOPinWrite(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN,0x00);             temp1=GPIOPinRead(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN)& KEYBOARD_COL_PIN;       GPIOPadConfigSet(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_OD_WPU);    GPIOPadConfigSet(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_OD_WPU);    GPIOPinTypeIn(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN);             GPIOPinTypeOutOD(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN);            GPIOPinWrite(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN,0x00);             temp2=GPIOPinRead(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN)& KEYBOARD_LIN_PIN;    temp3=temp1 | temp2;      if(temp3==temp)    {       for(key=0;key<20;key++)          if(temp==scanValue[key])           {             GPIOPinTypeIn(KEYBOARD_LIN_BASE,KEYBOARD_LIN_PIN);             GPIOPinTypeIn(KEYBOARD_COL_BASE,KEYBOARD_COL_PIN);              return(keyASC[key]);                    }    }   else     {       return('E');     }}return ('N');}
    11. lm3s811 矩阵键盘 8/3858 微控制器 MCU 2011-08-28
      我延时过了呀,还是不对,真晕呀,管脚通过上拉电阻连到了3.3v,有些引脚就是拉不到高电平
    12. 分享珍藏的LWIP资料,3个中文PDF 270/58071 微控制器 MCU 2011-08-13
      谢谢了!
    13. TI Stellaris给力资料分享 42/18593 微控制器 MCU 2011-08-13
      楼主辛苦了,谢谢分享!
    14. LM3S菜鸟成长日记-SD卡-文件写/读 237/61575 微控制器 MCU 2011-08-12
      借鉴一下,谢谢了
    15. TMS320F2407学习资料 85/19709 微控制器 MCU 2010-01-05
      我要用,只好回了,谢谢了。
    16. EEWorld 社区威望积分规则 3034/1608240 为我们提建议&公告 2010-01-05
      为了芯币,为了有好资料可以下载,我顶

最近访客

< 1/1 >

统计信息

已有103人来访过

  • 芯积分:--
  • 好友:--
  • 主题:2
  • 回复:16

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言