奇怪的PWM现象

[复制链接]
3515|36
 楼主| vaiting 发表于 2017-7-10 17:18 | 显示全部楼层 |阅读模式
void Pluses(void)                                                                        //励磁脉冲设置     P10.4与P10.5
{
        const Timer_A_PWMConfig pwmConfig30 =                     //TA3.0  P10.4
                {
                        TIMER_A_CLOCKSOURCE_ACLK,                        //选择为ACLK时钟
                        TIMER_A_CLOCKSOURCE_DIVIDER_1,                    //1分频
                               5240,                                           //周期
                            TIMER_A_CAPTURECOMPARE_REGISTER_0,                //选择通道0
                        TIMER_A_OUTPUTMODE_TOGGLE_RESET,            //电平方式
                        2620,                                              //周期
                };

        const Timer_A_PWMConfig pwmConfig31 =                     //TA3.1  P10.5
                {
                        TIMER_A_CLOCKSOURCE_ACLK,                        //选择为ACLK时钟
                        TIMER_A_CLOCKSOURCE_DIVIDER_1,                    //1分频
                               5240,                                           //周期
                            TIMER_A_CAPTURECOMPARE_REGISTER_1,                //选择通道1
                        TIMER_A_OUTPUTMODE_TOGGLE_SET,                    //电平方式
                        2620,                                              //周期
                };

                GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P10,GPIO_PIN4,GPIO_PRIMARY_MODULE_FUNCTION);
                Timer_A_generatePWM(TIMER_A3_MODULE, &pwmConfig30);

                GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P10,GPIO_PIN5,GPIO_PRIMARY_MODULE_FUNCTION);
                Timer_A_generatePWM(TIMER_A3_MODULE, &pwmConfig31);


}
各位路过的大神,请看上面的例程。
执行后,P10.4口,没有脉冲串。P10.5口,有6.25Hz脉冲串。
还请高手帮忙看看,到底啥问题?谢谢
mcu5i51 发表于 2017-7-10 17:23 | 显示全部楼层
没有用过这个类型片子,经验是检查IO状态,复用等
mcu5i51 发表于 2017-7-10 17:24 | 显示全部楼层
430 的好像还有时钟有些默认是关的
 楼主| vaiting 发表于 2017-7-10 17:24 | 显示全部楼层
我是用的是MSP432P401,使用固件函数库编写程序。
 楼主| vaiting 发表于 2017-7-10 17:27 | 显示全部楼层
我将TIMER_A_CAPTURECOMPARE_REGISTER_0,改为TIMER_A_CAPTURECOMPARE_REGISTER_4。
GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P10,GPIO_PIN4,GPIO_PRIMARY_MODULE_FUNCTION)改为 GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P9,GPIO_PIN3,GPIO_PRIMARY_MODULE_FUNCTION);
就能正常发出脉冲串。
我原来以为P10.4口坏了,将这个口强行置位,是正常的,证明口没有问题。
 楼主| vaiting 发表于 2017-7-10 17:28 | 显示全部楼层
mcu5i51 发表于 2017-7-10 17:23
没有用过这个类型片子,经验是检查IO状态,复用等

IO没有复用。两路PWM,分别使用10.4P和10.5P。
 楼主| vaiting 发表于 2017-7-10 17:37 | 显示全部楼层
mcu5i51 发表于 2017-7-10 17:24
430 的好像还有时钟有些默认是关的

TIMER_A_CLOCKSOURCE_ACLK,两个结构体同时使用的ACLK作为两个PWM口的时钟源。所以,应该不是您怀疑的原因。
dirtwillfly 发表于 2017-7-10 20:19 | 显示全部楼层
奇怪的问题。把TA3.0换一个输出模式试试
@若水 发表于 2017-7-11 08:37 | 显示全部楼层
查看IO复用功能是否已打开
 楼主| vaiting 发表于 2017-7-11 08:44 | 显示全部楼层
@若水 发表于 2017-7-11 08:37
查看IO复用功能是否已打开

你好。我用的P10.4P10.5,没有复用IO。您再给看看程序,有什么问题
 楼主| vaiting 发表于 2017-7-11 08:55 | 显示全部楼层
dirtwillfly 发表于 2017-7-10 20:19
奇怪的问题。把TA3.0换一个输出模式试试

版主啊,我已经被这些奇怪的问题,折腾的精疲力尽
存在的 发表于 2017-7-11 13:18 | 显示全部楼层
fhsxycq 发表于 2017-7-11 16:05 | 显示全部楼层
看看是不是配置第二路PWM的时候把第一路的配置清掉了
f747 发表于 2017-7-11 16:36 | 显示全部楼层
pwmConfig30 配置这句有问题:
TIMER_A_OUTPUTMODE_TOGGLE_RESET,            //电平方式
宇宙星辰 发表于 2017-7-11 17:00 | 显示全部楼层
f747 发表于 2017-7-11 16:36
pwmConfig30 配置这句有问题:
TIMER_A_OUTPUTMODE_TOGGLE_RESET,            //电平方式

正解
 楼主| vaiting 发表于 2017-7-11 17:18 | 显示全部楼层
f747 发表于 2017-7-11 16:36
pwmConfig30 配置这句有问题:
TIMER_A_OUTPUTMODE_TOGGLE_RESET,            //电平方式

我的注释不正确。
我也发现调整了P10.4和P10.5的配置顺序,结果不一样。
请问,我是用了两个CCR寄存器,怎么会出现这种异常?怎么解决呢?
 楼主| vaiting 发表于 2017-7-11 17:19 | 显示全部楼层

我的注释不正确。
我也发现调整了P10.4和P10.5的配置顺序,结果不一样。
请问,我是用了两个CCR寄存器分别对两个口进行配置,怎么会出现这种异常?怎么解决呢?
dirtwillfly 发表于 2017-7-11 21:24 | 显示全部楼层
你用的什么版本的库?
官网最新的手册里,参数定义和你的不一样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| vaiting 发表于 2017-7-12 08:34 | 显示全部楼层
dirtwillfly 发表于 2017-7-11 21:24
你用的什么版本的库?
官网最新的手册里,参数定义和你的不一样

版主这两种:TIMER_A3_BASE和TIMER_A3_model,是一样的,前者版本早一些后者晚一些。谢谢
15楼的帖子,我没有看懂,能否请细致的分析讲解一下。
 楼主| vaiting 发表于 2017-7-12 08:44 | 显示全部楼层
f747 发表于 2017-7-11 16:36
pwmConfig30 配置这句有问题:
TIMER_A_OUTPUTMODE_TOGGLE_RESET,            //电平方式

你好大神,我的目的是用TA3.0TA3.1发出同频反相的脉冲串,所以输出模式的配置采用了TOGGLE_SET和TOGGLE_RESET。请问,这样使用有什么问题呢?我是用了两个CCR寄存器,怎么会出现初始化一个口会影响另一个口呢?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

70

帖子

1

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