DSP论坛
直播中

连小勇

6年用户 7经验值
擅长:控制/MCU
私信 关注

f2812PWM波例程,EVA有输出,EVB始终3.3V高电平

EVB时钟已经使能,网上有人回答是PDPINTA引脚问题,也是没搞懂。本人新手,求大神指导。或者有哪些硬件引脚会影响GPIOB引脚输出PWM波?

相关设置代码粘贴如下:
    1. void main(void)
    2. {
    3.         /*初始化系统*/
    4.         InitSysCtrl();

    5.         /*关中断*/
    6.         DINT;
    7.         IER = 0x0000;
    8.         IFR = 0x0000;
    9.         
    10.         /*初始化PIE控制寄存器*/
    11.         InitPieCtrl();
    12.         
    13.         /*初始化PIE矢量表*/
    14.         InitPieVectTable();        
    15.         
    16.         /*初始化GPIO*/
    17.         InitGpio();
    18.         
    19.         /*初始化EV*/
    20.         InitEv();

    21.         //EvaRegs.T1CON.bit.TENABLE = 1;
    22.         //EvaRegs.T2CON.bit.TENABLE = 1;
    23.         //EvbRegs.T3CON.bit.TENABLE = 1;
    24.         //EvbRegs.T4CON.bit.TENABLE = 1;
    25.                
    26.         EINT;
    27.         ERTM;

    28.         for(;;)
    29.         {
    30.                 KickDog();///剔除看门狗,防止对DSP进行复位
    31.                                   }

    32.         }         


    33. void InitSysCtrl(void)
    34. {
    35.    Uint16 i;
    36.    EALLOW;
    37.    
    38. // On TMX samples, to get the best performance of on chip RAM blocks M0/M1/L0/L1/H0 internal
    39. // control registers bit have to be enabled. The bits are in Device emulation registers.
    40. /*   DevEmuRegs.M0RAMDFT = 0x0300;
    41.    DevEmuRegs.M1RAMDFT = 0x0300;
    42.    DevEmuRegs.L0RAMDFT = 0x0300;
    43.    DevEmuRegs.L1RAMDFT = 0x0300;
    44.    DevEmuRegs.H0RAMDFT = 0x0300;*/
    45.    
    46.            
    47. // Disable watchdog module
    48.    SysCtrlRegs.WDCR= 0x0068;

    49. // Initalize PLL
    50.    SysCtrlRegs.PLLCR = 0x03;  ///系统时钟45M
    51.    // Wait for PLL to lock
    52.    for(i= 0; i< 5000; i++){}
    53.       
    54. // HISPCP/LOSPCP prescale register settings, normally it will be set to default values
    55.    SysCtrlRegs.HISPCP.all = 0x0001;///45M/2=22.5M
    56.    SysCtrlRegs.LOSPCP.all = 0x0002;        
    57. // Peripheral clock enables set for the selected peripherals.   
    58.    SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
    59.    SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
    60.    //SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1;
    61.    //SysCtrlRegs.PCLKCR.bit.SCIENCLKB=1;
    62.                                 
    63.    EDIS;
    64.         
    65. }

    66. //---------------------------------------------------------------------------
    67. // KickDog:
    68. //---------------------------------------------------------------------------
    69. // This function resets the watchdog timer.
    70. // Enable this function for using KickDog in the application

    71. void KickDog(void)
    72. {
    73.     EALLOW;
    74.     SysCtrlRegs.WDKEY = 0x0055;
    75.     SysCtrlRegs.WDKEY = 0x00AA;
    76.     EDIS;
    77. }

    78. void InitGpio(void)
    79. {

    80.         EALLOW;
    81.         GpioMuxRegs.GPAMUX.all=0x00ff;
    82.         GpioMuxRegs.GPBMUX.all=0x00ff;

    83.         EDIS;
    84. }


    85. void InitEv(void)
    86. {

    87.         EvaRegs.ACTR.all = 0x0666;   ///通过对比较方式控制寄存器的配置,得PWM2低有效,PWM1高有效,改变设置可使电机反转
    88.         EvaRegs.DBTCONA.all = 0x0000;///使能死区定时器,分频45/16=2.8125M,死区时间5*0.356us=1.78us
    89.         EvaRegs.COMCONA.all = 0xa600; ///比较器控制A


    90.         EvaRegs.T1PR =0xffff;      
    91.         EvaRegs.T1CMPR =0x3c00;     
    92.         EvaRegs.T1CNT = 0;                        
    93.         EvaRegs.T1CON.all = 0x1042;

    94.         EvaRegs.T2PR =0x0fff;        
    95.         EvaRegs.T2CMPR =0x03c0;     
    96.         EvaRegs.T2CNT = 0;                        
    97.         EvaRegs.T2CON.all = 0x1042;

    98.         EvaRegs.GPTCONA.bit.TCOMPOE = 1;
    99.         EvaRegs.GPTCONA.bit.T1PIN = 1;
    100.         EvaRegs.GPTCONA.bit.T2PIN = 2;

    101.         EvaRegs.CMPR1 = 0x0C00;
    102.         EvaRegs.CMPR2 = 0x3C00;
    103.         EvaRegs.CMPR3 = 0xFC00;
    104. */

    105.         EvbRegs.ACTRB.all = 0x0666;   ///通过对比较方式控制寄存器的配置,得PWM2低有效,PWM1高有效,改变设置可使电机反转
    106.         EvbRegs.DBTCONB.all = 0x0000;///使能死区定时器,分频45/16=2.8125M,死区时间5*0.356us=1.78us
    107.         EvbRegs.COMCONB.all = 0xa600; ///比较器控制A

    108.         EvbRegs.T3PR =0xFFFF;        ////定时器1周期值0.356us*N
    109.         EvbRegs.T3CMPR =0x3C00;      ///定时器1比较值,没什么用,没用这种方式
    110.         EvbRegs.T3CNT = 0;                        ///定时器1初值设为0
    111.         EvbRegs.T3CON.all = 0x1042; ///连续增模式,TPS系数45M/2/16,T1使能,

    112.         EvbRegs.T4PR =0x0fff;        ////定时器1周期值0.356us*N
    113.         EvbRegs.T4CMPR =0x03c0;      ///定时器1比较值,没什么用,没用这种方式
    114.         EvbRegs.T4CNT = 0;                        ///定时器1初值设为0
    115.         EvbRegs.T4CON.all = 0x1042;

    116.         EvbRegs.GPTCONB.bit.TCOMPOE = 1;
    117.         EvbRegs.GPTCONB.bit.T3PIN = 1;
    118.         EvbRegs.GPTCONB.bit.T4PIN = 2;

    119.         //EvbRegs.EVBIMRA.bit.PDPINTB = 1;

    120.         EvbRegs.CMPR4 = 0x0C00;
    121.         EvbRegs.CMPR5 = 0x3C00;
    122.         EvbRegs.CMPR6 = 0xFC00;
    123. }

已退回9积分

回帖(1)

jinyi7016

2019-3-5 12:40:06
你的A、B设置的是什么输出方式,是互补的还是什么
1 举报
  • 连小勇: GpioMuxRegs.GPAMUX.all=0x00ff;
            GpioMuxRegs.GPBMUX.all=0x00ff;
    这两句不是将GPIOA和GPIOB的低八位设置为复用外设引脚输出,即PWM输出吗?您说的互补是指什么?

更多回帖

发帖
×
20
完善资料,
赚取积分