[技术问答] 求一个460 timera pwm调整的例程

[复制链接]
5427|12
 楼主| kaizxm 发表于 2021-7-23 13:37 | 显示全部楼层 |阅读模式
官方给的基于按键触发,没修改明白怎么连续输出
sgrtf661 发表于 2021-7-23 13:50 | 显示全部楼层
华大代理,可以技术支持qq:409946461
liangzhou1988 发表于 2021-7-27 16:50 | 显示全部楼层
把例程的硬件触发启动改成软件启动就好了,给你整了个100K的连续输出的例子。@kaizxm
100K.png
liangzhou1988 发表于 2021-7-27 16:57 | 显示全部楼层
PE09  PE13输出。
liangzhou1988 发表于 2021-7-27 16:59 | 显示全部楼层
here

main.zip

1.39 KB, 下载次数: 43

评论

nice  发表于 2021-7-29 19:33
 楼主| kaizxm 发表于 2021-7-29 19:37 | 显示全部楼层

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

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%高电平的

评论

有例子嘛  发表于 2021-8-2 14:31
前功尽弃 发表于 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[0];  
       
        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波输出数量一定不同占空比的例子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

154

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部