⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iar-

📁 IAR_example_EasyARM8962.zip
💻
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
** File Name:               GPIO_IN_OUT_reg.c
** Last modified Date:      2007.12.24 
** Last Version:            V1.1
** Description:             Stellaris系列单片机GPIO口操作
** 
**--------------------------------------------------------------------------------------------------------
** Created By:              Zhou Hai Xin
** Created date:            2007.09.20 
** Version:                 V1.0
** Descriptions:            扫描按键是否按下,如果按键按下则点亮LED指示灯,否则熄灭LED指示灯。
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             Kang qinhua
** Modified date:           2008.01.12
** Version:                 V1.1
** Description:
**
*********************************************************************************************************/
#define HWREG(x)		(*((volatile unsigned long *)(x)))

#define SYSCTL_PERIPH_GPIOB     0x20000002                              /*  GPIO B                      */
#define SYSCTL_PERIPH_GPIOE     0x20000010                              /*  GPIO E                      */
#define SYSCTL_RCGC2            0x400fe108                              /*  运行模式时钟门控寄存器2     */

#define GPIO_PORTB_BASE         0x40005000                              /*  GPIO Port B                 */
#define GPIO_PORTE_BASE         0x40024000                              /*  GPIO Port E                 */
#define GPIO_O_DIR              0x00000400                              /*  数据方向寄存器              */
#define GPIO_O_AFSEL            0x00000420                              /*  模式控制寄存器              */
#define GPIO_O_DATA             0x00000000                              /*  数据寄存器                  */
#define GPIO_O_DR4R             0x00000504                              /*  4mA驱动选择                 */
#define GPIO_O_DEN              0x0000051C                              /*  数字输入使能                */

#define KEY1                    0x00000004                              /*  定义KEY1                    */
#define LED3	                0x00000040                              /*  定义LED3                    */

/*********************************************************************************************************
** Function name:           main
** Descriptions:            通过判断KEY1有没有按下,按下则点亮LED3,否则熄灭LED3。
** input parameters:        无
** output parameters:       无  
** Returned value:          无   
*********************************************************************************************************/
int main(void)
{
    unsigned char  i;
    HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOB & 0x0fffffff;            /*  使能GPIO PB口外设           */
    HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOE & 0x0fffffff;            /*  使能GPIO PE口外设           */
    for (i = 0; i < 4; i++) {
        ;
    }
    HWREG(GPIO_PORTE_BASE + GPIO_O_DIR) &= ~KEY1;                       /*  GPIO PE2为输入              */
    HWREG(GPIO_PORTE_BASE + GPIO_O_AFSEL) &= ~KEY1;                     /*  PE2为GPIO功能               */
  
    HWREG(GPIO_PORTB_BASE + GPIO_O_DIR) |= LED3;                        /*  GPIO PB6为输出              */
    HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) &= ~LED3;                     /*  PB6为GPIO功能               */

	                                                                
    HWREG(GPIO_PORTE_BASE + GPIO_O_DR4R) = (HWREG(GPIO_PORTE_BASE + GPIO_O_DR4R) | KEY1);
                                                                        /*设置为4mA驱动                 */	                                                                    
    HWREG(GPIO_PORTE_BASE + GPIO_O_DEN) = (HWREG(GPIO_PORTE_BASE + GPIO_O_DEN) | KEY1);
                                                                        /*设置为推挽管脚                */
    HWREG(GPIO_PORTB_BASE + GPIO_O_DR4R) = (HWREG(GPIO_PORTB_BASE + GPIO_O_DR4R) | LED3);
                                                                        /*设置为4mA驱动                 */
    HWREG(GPIO_PORTB_BASE + GPIO_O_DEN) = (HWREG(GPIO_PORTB_BASE + GPIO_O_DEN) | LED3);
                                                                        /*设置为推挽管脚                */
    while (1) {
       if (HWREG(GPIO_PORTE_BASE + (GPIO_O_DATA + (KEY1 << 2)))) {      /*  读KEY1引脚的值,并判断,    */
                                                                        /*  如果为高,则熄灭LED3        */
           HWREG(GPIO_PORTB_BASE + (GPIO_O_DATA + (LED3 << 2))) = LED3;
       } else {                                                         /*  否则点亮LED3                */
           HWREG(GPIO_PORTB_BASE + (GPIO_O_DATA + (LED3 << 2))) = ~LED3;
       }
    }
}

/*********************************************************************************************************
 END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -