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;
  • 相关阅读:
    Servlet中通过过滤器实现统一的手动编码(解决中文乱码)
    【原】使用Maven完成自动化打包并部署到Linux服务器下(Tomcat7)
    XListview的下拉刷新、上拉加载、用Pull解析XML
    gson解析
    数据库查询
    Android中用友盟实现QQ的第三方登录
    Listview和checkbox多选
    ScrollView嵌套ViewPager 时候 Pager左右滑动不流畅
    字符串的截取
    倒计时
  • 原文地址:https://www.cnblogs.com/shamoof/p/3641403.html
Copyright © 2011-2022 走看看