查看: 4769|回复: 7

lptout 引脚输出PWM波要怎么做?

[复制链接]

1

主题

2

帖子

11

积分

初级工程师

Rank: 1

积分
11
发表于 2018-12-26 14:17:01 | 显示全部楼层 |阅读模式
lptout 引脚输出PWM波要怎么做?
回复

使用道具 举报

6

主题

19

帖子

573

积分

版主

Rank: 7Rank: 7Rank: 7

积分
573
发表于 2018-12-26 14:47:36 | 显示全部楼层
你好,FM3316的LPTIM PWM输出可以参考FM3316示例程序中的LPTIM示例程序。链接如下:
http://www.fmdevelopers.com.cn/f ... &extra=page%3D1
回复

使用道具 举报

6

主题

19

帖子

573

积分

版主

Rank: 7Rank: 7Rank: 7

积分
573
发表于 2018-12-26 14:48:47 | 显示全部楼层
1、GPIO配置
GPIO_Init(PORTB  ,PIN5 , GPIO_MODE_ALTERNATE_FUNCTION , MODE_ALTERNATE_SELECT_1);//PWM输出

2、LPTIM配置
/*************************************************************************
函数名称:LPTIM_PWM
功能说明: LLPTIM PWM输出 (PB5输出) 输出频率自行修改 示例使用 2KHz
输入参数:无
输出参数:无
返回参数:无
*************************************************************************/
void LPTIM_PWM(void)
{
        LPTCTRL = 0;//关闭计数器
        LPTCFG0 = B0000_0000;//清0
        LPTCFG1 = B0000_0000;//清0
       
        /*时钟源选择*/       
                LPTCFG0        |= LPTIM_CNT_SRC_LSCLK;//时钟lsclk,外部32768时钟               
        //        LPTCFG0        |= LPTIM_CNT_SRC_CORECLK;//核心频率时钟,程序运行时钟,默认8M
       
        /*时钟分频*/
        LPTCFG0        |= LPTIM_CNT_CLK_DIV1;//1分频
        /*工作模式选择*/       
        LPTCFG1        |= LPTIM_MODE_WAVE_OUT_TIMER;//带波形输出的普通定时器模式
        /*计数模式选择*/
        LPTCFG1        |= LPTIM_CNT_MODE_CONTINUE;//连续计数模式       
               
  /*输出模式选择(PB5脚输出,工作模式需选择带波形输出的普通定时器模式)*/       
        LPTCFG1        |= LPTIM_PWM_WAVE_OUT;//pwm输出模式       

        LPTCFG1        |= LPTIM_POS_POL_OUT;//输出波形正极性
        //LPTCFG1        |= LPTIM_NEG_POL_OUT;//输出波形负极性
       
        LPTCNTL        = 0x00;  //计数寄存器
        LPTCNTH        = 0x00;
       
        LPTCMPL        =  0x08; //比较寄存器 //计数到这反转
        LPTCMPH        =  0x00;
       
        TARGETL =  0x10; //目标寄存器(溢出寄存器)//计数到这再次反转,并清计数器
        TARGETH =  0x00;
       
        LPTIMIF = B0000_0000;//清标志
  LPTIMIE        = B0000_0000;//不中断

}
回复

使用道具 举报

1

主题

2

帖子

11

积分

初级工程师

Rank: 1

积分
11
 楼主| 发表于 2018-12-26 15:11:52 | 显示全部楼层
那我如果把这个模块用来做PWM输出的话是不是不能用作自动唤醒定时器了,我同一个程序能同时实现这两个功能吗?
回复

使用道具 举报

6

主题

19

帖子

573

积分

版主

Rank: 7Rank: 7Rank: 7

积分
573
发表于 2018-12-27 12:43:55 | 显示全部楼层
是的,但可以考虑分时复用下。或者看下RTC唤醒是否满足需要。
回复

使用道具 举报

1

主题

7

帖子

263

积分

高级工程师

Rank: 3Rank: 3

积分
263
发表于 2019-3-26 11:33:26 | 显示全部楼层
你的PWM频率怎么计算出是2k的,有公式吗?
回复

使用道具 举报

1

主题

7

帖子

263

积分

高级工程师

Rank: 3Rank: 3

积分
263
发表于 2019-3-26 11:36:28 | 显示全部楼层
zg1130286920 发表于 2019-3-26 11:33
你的PWM频率怎么计算出是2k的,有公式吗?

还有占空比呢?
回复

使用道具 举报

151

主题

845

帖子

4405

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4405
发表于 2019-4-11 17:10:00 | 显示全部楼层

       LPTCMPL        =  0x08; //比较寄存器 //计数到这反转
        LPTCMPH        =  0x00;
        
        TARGETL =  0x10; //目标寄存器(溢出寄存器)//计数到这再次反转,并清计数器
        TARGETH =  0x00;

这个是控制电平反转的   ,   2K 就是 拿时钟去算就好了。最后拿个示波器去调就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表