打印
[技术问答]

求一个460 timera pwm调整的例程

[复制链接]
4517|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 (263.58 KB )

100K.png

使用特权

评论回复
地板
liangzhou1988| | 2021-7-27 16:57 | 只看该作者
PE09  PE13输出。

使用特权

评论回复
5
liangzhou1988| | 2021-7-27 16:59 | 只看该作者
here

main.zip

1.39 KB

使用特权

评论回复
评论
kaizxm 2021-7-29 19:33 回复TA
nice 
6
kaizxm|  楼主 | 2021-7-29 19:37 | 只看该作者

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

使用特权

评论回复
7
kaizxm|  楼主 | 2021-7-29 19:37 | 只看该作者

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

使用特权

评论回复
8
两只袜子| | 2021-8-2 10:51 | 只看该作者
把例程改成软件触发启动就好了

使用特权

评论回复
9
martinhu| | 2021-8-2 13:09 | 只看该作者
kaizxm 发表于 2021-7-29 19:37
TIMERA_SetCompareValue 设置值为0不能完全关闭pwm 你是这样的嘛

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

使用特权

评论回复
评论
kaizxm 2021-8-2 14:31 回复TA
有例子嘛 
10
前功尽弃| | 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,
配置和中断都给你写好了

使用特权

评论回复
11
前功尽弃| | 2022-3-9 18:50 | 只看该作者
谁有DMA控制PWM波输出数量一定不同占空比的例子

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

152

帖子

4

粉丝