zoukankan      html  css  js  c++  java
  • Example_28xGPIO.c

    Step1 初始化系统InitSysCtrl();

    EALLOW;
    
    SysCtrlRegs.WDCR= 0x0068;//禁止看门狗
    
    SysCtrlRegs.PLLCR = 0xA;//初始化系统时钟
    
    for(i= 0; i< 5000; i++){}//确保时钟初始化完成
    
    SysCtrlRegs.HISPCP.all = 0x0001;//设置高速外设时钟
    SysCtrlRegs.LOSPCP.all = 0x0002;//设置低速外设时钟
    
    
    
    SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;//使能需要用到的各外设时钟
    SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;//使能需要用到的各外设时钟
    SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1;//使能需要用到的各外设时钟
    EDIS;

    Step2 清除所有CPU中断和中断标志

    DINT;
    IER = 0x0000;
    IFR = 0x0000;

    Step3 初始化PIE控制寄存器到默认状态InitPieCtrl();

    PieCtrl.PIECRTL.bit.ENPIE = 0;//禁止PIE
    
    PieCtrl.PIEIER1.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER2.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER3.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER4.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER5.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER6.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER7.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER8.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER9.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER10.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER11.all = 0;//清除所有PIE中断使能寄存器
    PieCtrl.PIEIER12.all = 0;//清除所有PIE中断使能寄存器
    
    PieCtrl.PIEIFR1.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR2.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR3.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR4.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR5.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR6.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR7.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR8.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR9.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR10.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR11.all = 0;//清除所有PIE中断标志寄存器
    PieCtrl.PIEIFR12.all = 0;//清除所有PIE中断标志寄存器
    
    PieCtrl.PIECRTL.bit.ENPIE = 1;//使能PIE中断
    PieCtrl.PIEACK.all = 0xFFFF;//PIEACK全部写1,难道是说进入核中断吗?

    Step4 初始化中断向量表InitPieVectTable();

    int16 i;
    Uint32 *Source = (void *) &PieVectTableInit;
    Uint32 *Dest = (void *) &PieVectTable;
    
    EALLOW;    
    for(i=0; i < 128; i++)
      *Dest++ = *Source++;    
    EDIS;
    
    PieCtrl.PIECRTL.bit.ENPIE = 1;

    Step5 用户程序

    var1= 0x0000;        // sets GPIO Muxs as I/Os
    var2= 0xFFFF;        // sets GPIO DIR as outputs
    var3= 0x0000;        // sets the Input qualifier values

    用户程序Gpio_select();

    EALLOW;
         
    GpioMuxRegs.GPAMUX.all=var1;//设置GPIO作为通用输入输出引脚
    GpioMuxRegs.GPBMUX.all=var1;//设置GPIO作为通用输入输出引脚   
    GpioMuxRegs.GPDMUX.all=var1;//设置GPIO作为通用输入输出引脚
    GpioMuxRegs.GPFMUX.all=var1;//设置GPIO作为通用输入输出引脚         
    GpioMuxRegs.GPEMUX.all=var1;//设置GPIO作为通用输入输出引脚 
    GpioMuxRegs.GPGMUX.all=var1;//设置GPIO作为通用输入输出引脚
                                            
    GpioMuxRegs.GPADIR.all=var2;//设输GPIO端口为输出模式
    GpioMuxRegs.GPBDIR.all=var2;//设输GPIO端口为输出模式   
    GpioMuxRegs.GPDDIR.all=var2;//设输GPIO端口为输出模式
    GpioMuxRegs.GPEDIR.all=var2;//设输GPIO端口为输出模式        
    GpioMuxRegs.GPFDIR.all=var2;//设输GPIO端口为输出模式
    GpioMuxRegs.GPGDIR.all=var2;//设输GPIO端口为输出模式
    
    GpioMuxRegs.GPAQUAL.all=var3;//设置GPIO输入限定值
    GpioMuxRegs.GPBQUAL.all=var3;//设置GPIO输入限定值   
    GpioMuxRegs.GPDQUAL.all=var3;//设置GPIO输入限定值
    GpioMuxRegs.GPEQUAL.all=var3;//设置GPIO输入限定值
     
        EDIS;

    一个简单的通用引脚输入输出就这样设置完成哒,之后只要简单的写GPxDAT,GPxSET,GPxCLEAT,GPxTOGGLE,GPxSET,GPxCLEAR,GPxTOGGLE即可

    GpioDataRegs.GPADAT.all    =0x5555;                 
    GpioDataRegs.GPBDAT.all    =0x5555;     
    GpioDataRegs.GPDDAT.all    =0x0041;
    GpioDataRegs.GPEDAT.all    =0x0005;
    GpioDataRegs.GPFDAT.all    =0x5555;    
    GpioDataRegs.GPGDAT.all    =0x0010;
  • 相关阅读:
    理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
    Neutron VxLAN + Linux Bridge 环境中的网络 MTU
    理解 QEMU/KVM 和 Ceph(1):QEMU-KVM 和 Ceph RBD 的 缓存机制总结
    [译] 企业级 OpenStack 的六大需求(第 3 部分):弹性架构、全球交付
    [译] 企业级 OpenStack 的六大需求(第 2 部分):开放架构和混合云兼容
    [译] 企业级 OpenStack 的六大需求(第 1 部分):API 高可用、管理和安全
    Javascript中的Array(数组) 、{}(映射) 与JSON解析
    HTML中显示特殊字符,如尖括号 “<”,">"等等
    Ubuntu 12.04 安装配置 Apache2
    Python中函数的参数传递与可变长参数
  • 原文地址:https://www.cnblogs.com/shamoof/p/3641403.html
Copyright © 2011-2022 走看看