3055|0

27

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MSP430F5529LP的P1.4口输出单路PWM波 [复制链接]

本帖最后由 闵丨大 于 2019-8-30 12:46 编辑

此内容由EEWORLD论坛网友闵丨大原创,如需转载或用于商业用途需征得作者同意并注明出处
 

此帖回答昨天自己发出的求助帖。在此做一个小小记录。2019.08.30求助帖链接:https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1088275&extra=

 

输出单路PWM

MSP430Ware包中例程—timer_a_ex1_pwmSingle可以输出占空比0.75,频率**(忘了,可以用示波器测一下)单路PWM波。输出引脚口为P2.0,代码成功烧写后按下单片机复位按钮并用示波器观测波形验证代码是否正确。

 

通过查阅MSP430F5529 数据手册表4-1 P1.4也具备PWM输出能力,现想把原来例程P2.0引脚修改为P1.4引脚输出PWM

 

配置外设就是一种套路,我个人总结为三步走。配置外设时钟;配置GPIO口;初始化外设模块。

 

配置外设时钟:每一个外设模块若要工作必须要有时钟控制,则使用每个外设模块前必须了解该外设的时钟最高能达到多少。外设时钟都是通过系统时钟分频所得,得知系统时钟频率后需关注该外设实际获得时钟频率为多少?学习使用每一款单片机必须会看时钟树。

 

配置GPIO口:GPIO(General-purpose Input Output)通用数字输入输出口,GPIO外设是一座沟通MUC和外界唯一桥梁。

 

初始化外设模块:每一个外设模块都有非常多寄存器,若通过此寄存器完成某一目的则需提前设定。举一个例子,一个人需要去北京,要求5天后到天安门广场,则此人可以有很多不同选择。到北京天安门可以认为是目的,各种不同选择可以认为是寄存器配置。若仅有前面两步无配置寄存器,即此人没法到达天安门故目的不能实现。

 

现通过配置PWM模块帮助理解三步走方法。

步骤1.配置PWM模块时钟

步骤2.配置GPIO口

步骤3.初始化PWM模块

 

MSP430F5529没有独立PWM模块,故不存在PWM模块时钟。此处需要提一下DSP28335,此款MUC也是TI公司。它有独立PWM模块,此模块又包括时基模块、比较模块、动作模块等。回到此处,MSP430F5529外设配置可以把步骤1、3稍作修改且合并放在步骤2后面。

 

配置MSP430F5529的PWM模块两步走

步骤1.配置GPIO口

步骤2.初始化Timer_A寄存器

 

步骤1:配置P1.4为PWM输出引脚口

GPIO_setAsPeripheralModuleFunctionOutputPin(

        GPIO_PORT_P1,

        GPIO_PIN4);

 

步骤2:查数据手册可知P1.4对应TimerA寄存器,则配置该寄存器为PWM模式

 

//Generate PWM - Timer runs in Up mode

    Timer_A_outputPWMParam param = {0};//向上计数模式。param是一个结构体变量。

    param.clockSource = TIMER_A_CLOCKSOURCE_SMCLK;//Timer_A时钟源

    param.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1;//不分频

    param.timerPeriod = TIMER_PERIOD;//PWM周期计数值

    param.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_3;//查表可知P1.4对应CCR3

    param.compareOutputMode = TIMER_A_OUTPUTMODE_RESET_SET;//自动重装载模式

    param.dutyCycle = DUTY_CYCLE;//占空比计数值

    Timer_A_outputPWM(TIMER_A0_BASE, &param);//查表可知P1.4对应TimerA0

 

总结:例程代码总共需要修改3个地方。

GPIO_setAsPeripheralModuleFunctionOutputPin(

        GPIO_PORT_P1,

        GPIO_PIN4);

 

param.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_3;//查表可知P1.4对应CCR3

 

Timer_A_outputPWM(TIMER_A0_BASE, &param);//查表可知P1.4对应TimerA0

 

源代码如附:

timer_a_ex1_pwmSingle.rar (589.76 KB, 下载次数: 12)

image-20190830124328-1.png (176.97 KB, 下载次数: 0)

image-20190830124328-1.png
 
点赞 关注(1)

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表