kaizxm 发表于 2021-7-23 13:37

求一个460 timera pwm调整的例程

官方给的基于按键触发,没修改明白怎么连续输出

sgrtf661 发表于 2021-7-23 13:50

华大代理,可以技术支持qq:409946461

liangzhou1988 发表于 2021-7-27 16:50

把例程的硬件触发启动改成软件启动就好了,给你整了个100K的连续输出的例子。@kaizxm

liangzhou1988 发表于 2021-7-27 16:57

PE09PE13输出。

liangzhou1988 发表于 2021-7-27 16:59

here

kaizxm 发表于 2021-7-29 19:37

liangzhou1988 发表于 2021-7-27 16:59
here

TIMERA_SetCompareValue 设置值为0不能完全关闭pwm 你是这样的嘛

kaizxm 发表于 2021-7-29 19:37

liangzhou1988 发表于 2021-7-27 16:59
here

TIMERA_SetCompareValue 设置值为0不能完全关闭pwm 你是这样的嘛

两只袜子 发表于 2021-8-2 10:51

把例程改成软件触发启动就好了

martinhu 发表于 2021-8-2 13:09

kaizxm 发表于 2021-7-29 19:37
TIMERA_SetCompareValue 设置值为0不能完全关闭pwm 你是这样的嘛

PCONR寄存器有另外的bit用来输出常100%或0%高电平的

前功尽弃 发表于 2022-3-9 18:48

void timera2_pwm2_cfg(void)
{
        M4_MSTP->FCG2_f.TIMERA_2 = 0;    //时钟使能TIMERA_2功能
       
        ENABLE_GPIO_REG_WRITE();
        M4_PORT->PCRA1_f.DDIS = 0;   //配置成为数字口
        M4_PORT->PFSRA1_f.FSEL = 4 ;//配置成TIMA_2_PWM2输出       
        DISABLE_GPIO_REG_WRITE();
       
        M4_PORT->POERA_f.POUTE01 = 1;//输出
       
        M4_TMRA2->BCSTR_f.CKDIV = 1;//PCLK1/2(20M)
        M4_TMRA2->BCSTR_f.SYNST = 0;//禁止与1单元同步
        M4_TMRA2->BCSTR_f.MODE = 0;   //锯齿波计数方式
        M4_TMRA2->BCSTR_f.DIR = 1;    //向上计数方式

//        M4_TMRA2->ECONR_f.ETEN2 = 1;   //2单元2通道使能匹配事件输出
        M4_TMRA2->ICONR_f.ITEN2 = 1;//2单元2通道使能匹配中断       
        M4_INTC->SEL2_f.INTSEL = INT_TMRA2_CMP; //中断2选择定时器a2通道2匹配中断
       
        NVIC_ClearPendingIRQ(Int002_IRQn);
        NVIC_SetPriority(Int002_IRQn , 12);    //设置优先级
        NVIC_EnableIRQ(Int002_IRQn);       //使能中断1
       
        M4_TMRA2->PERAR_f.PER = 25;   //1.25us周期       
        M4_TMRA2->CMPAR2_f.CMP = 12;   //0.6us
       
//        M4_TMRA2->CMPAR2_f.CMP = rgb;
       
        M4_TMRA2->PCONR2_f.CMPC = 0;//匹配输出0
        M4_TMRA2->PCONR2_f.PERC = 1;//溢出输出1
        M4_TMRA2->PCONR2_f.STAC = 1;//溢出输出1
        M4_TMRA2->PCONR2_f.STPC = 0;//溢出输出0
        M4_TMRA2->PCONR2_f.OUTEN = 1;   //端口输出使能
       
        M4_TMRA2->BCSTR_f.START = 1;    //定时器开启
}

void IRQ002_Handler(void)
{
        if(M4_TMRA2->STFLR_f.CMPF2)
        {
                M4_TMRA2->STFLR_f.CMPF2 = 0;//清楚中断标志位
               
        }
}
修改频率就修改M4_TMRA2->PERAR_f.PER,修改占空比就修改M4_TMRA2->CMPAR2_f.CMP,
配置和中断都给你写好了

前功尽弃 发表于 2022-3-9 18:50

谁有DMA控制PWM波输出数量一定不同占空比的例子
页: [1]
查看完整版本: 求一个460 timera pwm调整的例程