历史上的今天
返回首页

历史上的今天

今天是:2025年02月12日(星期三)

正在发生

2020年02月12日 | MSP430G2253 产生占空比可调的PWM

2020-02-12 来源:eefocus

最近刚刚做了一个用430驱动白光LED的代码   其中用到了以前用到的ADC和PWA这些常用的外设  发现对片子掌握的还是太基础 现在复习一下  以后用到的时候也算有个参考 今天就只学习一点最基本的功能 用430产生一个占空比可调的PWM


先说一下步骤:

1:首先我们要知道那个引脚可以作为定时PWM的输出引脚 如果不太熟悉引脚 就去查阅册  


2:配置这个IO  这种情况下 无论那个系列的片子 基本作为PWM输出的时候 IO配置为输    出 选择其端口复用功能 详细配置  看手册


3:设置PWM的周期  TACCR0 或者CCR0  貌似是一个冬冬吧  这里面的数值决定了你PWM的   周期 举个简单的例子 比如你使用1MHZ的时钟频率  CCR0=100 则PWM的周期为100us     那么相应的频率就是10Khz


4:设置寄存器TACTL  设置输出模式 这里输出模式有7种  这里我贴一个图片 可以很好的理解这几种模式:



大家可以仔细观察一下  七种输出模式的2和6两种模式  他们输出的PWM恰好是互补的  其实这为我们需要互补的两个PWM提供了一个很好的生成方法  特别使我们在驱动全桥的让对角线交互导通的时候需要用到这种互补的PWM并且 他还可以生成死区区间  这点在英文手册中有讲到 有需要的可以去看一下  死区时间=时钟周期*(TACCR1-TACCR2)


5:设置相应的占空比 就是定时器捕获比较寄存器  其实就是CCR1和CCR2的赋值问题 


6:操作TACTL 也就是定时器A控制寄存器 选择时钟源和计数模式 至于分频和中断什么这里暂时不考虑了 寄存器里面的计数模式决定你是否开启了定时器 以及你的计数模式

如图:


配置完成这些自然就能产生相应的PWM了  但是我们如何改变占空比呢  其实比较简单  只需要我们按键改变一下CCR1或者CCR2里面的值皆就可以了


下面附上一段代码 仅供参考  按键接P1.3和P1.4  P1.2产生PWM  在示波器上可以明显看到用按键控制波形的变化 


代码如下:

#include

long int flag=10;//决定PWM占空比的变量

/****************************************************************************

函数名称 :delay

函数功能:延时   延时的长短由tmp的数值决定

函数参数:无

函数返回值:无

*****************************************************************************/

void delay(void)

{

    unsigned int tmp;

    for(tmp = 120;tmp > 0;tmp--);

}

 

/*****************************************************************************

函数名称 :Key

函数功能 :检测按键  用来改变flag的值 进而改变PWM的占空比  目前PWM的精确度为1%

函数参数:无

函数返回值:无

*****************************************************************************/

void Key()

  P1DIR&=~(BIT3+BIT3);//设置IO为输入模式

  P1REN|=BIT3+BIT4;//启用上拉/下拉模式

  P1OUT|=BIT3+BIT4;//设置为上拉模式               

  {         

    if((P1IN&BIT3)==0)//按键按下

    {

      delay();                  //延时用来消除按键的抖动

      while(!(P1IN&BIT3));      //等待按键松手

      flag+=1;                  //flag+1   用来改变占空比

      if(flag>100)              //占空比到100  清零

        flag=0;

    }

    if((P1IN&BIT4)==0)//同上注释

    {

      delay();

      while(!(P1IN&BIT4));

      flag-=1;

      if(flag>100)

        flag=0;

    }

  }

}

 

/**************************************************************************

函数名称: PWM_Init

函数功能:初始化PWM

函数参数:无

函数返回值:无

***************************************************************************/

void  PWM_Init()

{

  P1DIR |= BIT2;                            // 设置P1.2为输出

  P1SEL |= BIT2;                            // 选择P1.2的PWM功能

  P1SEL2 = 0;     //选择默认引脚功能 

  CCR0 = 100;                              // 设定PWM  周期  

  CCTL1 = OUTMOD_7;                         

  TACTL = TASSEL_2 + MC_1;                  // SMCLK时钟  增计数模式 

}

 

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗

  PWM_Init();

  for (;;)

  {

    Key();

    CCR1 = flag;

  }

}

推荐阅读

史海拾趣

Ho Chien Electronics Group Inc公司的发展小趣事

Ho Chien Electronics Group Inc公司发展故事

故事一:创立与全球化布局

Ho Chien Electronics Group Inc.(以下简称“Ho Chien”)创立于1974年,其全球总部位于美国波士顿。自成立以来,Ho Chien迅速在全球范围内扩展其业务,先后在中国、新加坡、德国、巴西、加拿大和墨西哥等地设立了超过40个分部。这一布局不仅加强了公司的市场渗透力,还为其提供了丰富的资源支持,助力其在电子行业细分市场中稳步前行。Ho Chien特别专注于互连与机电产品领域,通过为原始设备制造商和合约制造商提供高质量的产品和服务,逐步在行业内建立了良好的声誉。

故事二:亚太市场的拓展

2012年12月,Ho Chien正式启动其亚太业务,并将亚太区总部设在香港。为了更好地服务亚太地区的客户,Ho Chien不仅设立了销售部,还构建了区域配送中心和增值服务中心。经过数年的努力,Ho Chien亚太区已开设24个分部和3处仓库,极大地提升了其在该地区的运营效率和服务质量。这一举措不仅加深了Ho Chien在亚太市场的影响力,还为其未来的全球扩张奠定了坚实的基础。

故事三:产品线的丰富与拓展

Ho Chien致力于为电子行业各细分市场的客户提供全面支持,其产品线涵盖了25个不同元器件类别。主要分销产品包括互连器件、继电器、风扇、开关、散热解决方案、套管和线束产品、晶体与振荡器、紧固件与五金件以及传感器等。随着市场的不断变化和技术的飞速发展,Ho Chien不断调整和优化其产品线,以满足客户日益增长的需求。这一策略不仅帮助Ho Chien保持了其在行业内的竞争力,还为其带来了稳定的收入来源。

故事四:创新与研发

作为电子行业的领军企业之一,Ho Chien深知创新对于公司发展的重要性。因此,公司不断加大在研发方面的投入,致力于新技术、新产品的开发和应用。通过引进先进的研发设备和优秀人才,Ho Chien在多个领域取得了重大突破,并成功推出了一系列具有自主知识产权的产品。这些创新成果不仅提升了Ho Chien的品牌价值,还为其在全球市场上的拓展提供了有力支持。

故事五:人才培养与企业文化

在快速发展的过程中,Ho Chien深刻认识到人才对于公司持续发展的关键作用。因此,公司始终坚持“以员工为中心”的管理思想,努力为员工创造宽松的工作氛围和良好的发展机会。Ho Chien不仅提供优厚的福利待遇和丰富的培训资源,还鼓励员工积极发挥自己的才华和潜能。在这种企业文化的影响下,Ho Chien汇聚了一大批优秀的专业人才和管理精英,为公司的快速发展提供了强有力的智力支持。同时,这种积极向上的企业文化也进一步提升了Ho Chien的品牌形象和社会影响力。

Holtek(合泰)公司的发展小趣事

Holtek(合泰)公司电子行业的五个发展故事

故事一:初创与台湾半导体产业的崛起

1983年,合德集成电路的成立标志着Holtek(合泰)的前身正式踏入半导体行业,为台湾半导体产业开启了新篇章。随着技术的不断积累和市场需求的增长,1988年,合泰半导体在新竹科学园区的建立,成为公司在晶圆制造领域的重要里程碑。这一时期,合泰半导体专注于技术创新与品质提升,逐步在竞争激烈的半导体市场中站稳脚跟,为后续的快速发展奠定了坚实基础。

故事二:晶圆制造与全球市场的拓展

进入90年代,合泰半导体迎来了快速发展期。1990年,五英寸VLSI晶圆厂的完工并开始生产,标志着公司在晶圆制造方面迈出了坚实的一步。随着生产能力的提升,合泰半导体开始积极拓展全球市场。2000年,公司股票公开发行,并通过国际ISO9001质量系统认证,进一步巩固了其在行业内的地位。同年,香港分公司的成立,以及随后在美国和上海设立的子公司,使得合泰半导体的业务版图迅速扩展至全球,加强了其在北美和大陆地区的销售与技术服务能力。

故事三:技术创新与产品研发

合泰半导体始终将技术创新视为企业发展的核心动力。进入21世纪后,公司不断推出具有竞争力的新产品,以满足市场的多样化需求。例如,在MCU(微控制器)领域,合泰半导体凭借其在低功耗、高性能方面的技术优势,成功开发出多款适用于触控、健康量测、工业控制等多个领域的MCU产品。这些产品的推出不仅丰富了公司的产品线,也进一步提升了公司在全球市场的竞争力。

故事四:物联网市场的布局与深耕

随着物联网市场的兴起,合泰半导体敏锐地捕捉到了这一新兴市场的巨大潜力。公司开始积极布局物联网领域,致力于为客户提供从硬件到软件、从芯片到解决方案的一站式服务。在智能家居、健康医疗、智慧城市等物联网应用场景中,合泰半导体凭借其专业的MCU产品和强大的技术服务能力,赢得了众多客户的信赖与合作。通过不断的技术创新和产品优化,合泰半导体在物联网市场中占据了重要地位。

故事五:人才培养与校企合作

人才是企业发展的根本。合泰半导体深知这一点,因此一直将人才培养视为企业发展的重要战略之一。公司不仅为员工提供丰富的在职培训计划和职涯提升管道,还积极与高校开展校企合作,共同培养具有创新精神和实践能力的专业人才。例如,与某高校共建单片机应用开发联合实验室,不仅为学生提供了实践锻炼的平台,也为企业输送了大量优秀人才。这种校企合作模式不仅促进了企业的技术创新和产品研发,也为行业培养了大量高素质的专业人才。

EETools公司的发展小趣事

为了进一步扩大市场份额和提升品牌影响力,EETools积极拓展海外市场。公司通过与海外代理商和合作伙伴建立紧密的合作关系,成功将产品推向全球各地。同时,EETools还积极参加国际电子展会和论坛,与全球同行交流经验和技术,不断提升自身的知名度和影响力。

FILTRAN公司的发展小趣事

EETools公司成立于1992年,当时正值微处理器开发工具行业蓬勃发展的时期。公司创始人凭借对嵌入式系统产品的深刻理解和市场需求的敏锐洞察,决定投身于这一领域。EETools在硅谷的电子和计算机行业中心设立总部,迅速成为该地区的一颗新星。

在初创阶段,EETools专注于嵌入式系统产品的咨询和分销业务。通过与多家知名半导体厂商建立合作关系,EETools成功将各种高性能的嵌入式系统产品引入市场,满足了客户多样化的需求。同时,公司还积极研发自主品牌的嵌入式开发工具,为客户提供更为全面和专业的服务。

Holt Integrated Circuits公司的发展小趣事

除了传统的航空电子解决方案外,Holt还致力于高压LCD显示驱动器的研发。这些产品不仅满足了航空电子设备对高可靠性和高清晰度的需求,还广泛应用于工业过程自动化和井下钻探等领域。Holt的高压LCD显示驱动器以其卓越的性能和稳定性,赢得了众多客户的信赖和好评。

EMC [ELAN Microelectronics Corp]公司的发展小趣事

作为一家有社会责任感的企业,义隆电子一直积极履行社会责任,致力于可持续发展。公司注重环境保护和资源节约,采用环保材料和节能技术生产产品。同时,公司还积极参与公益事业和社会活动,回馈社会。这种注重社会责任和可持续发展的企业文化使得义隆电子在行业内树立了良好的形象。

以上五个故事简要概述了义隆电子股份有限公司(Elan Microelectronics Corp.)在不同发展阶段的关键事件和成就。这些故事展示了义隆电子在技术创新、市场拓展、人才培养和社会责任等方面的努力和成就。

问答坊 | AI 解惑

新款低功耗ASK模块介绍

此是一款兼容ASK/OOK接收單芯片模块,可直接至标准编码器或CPU编码,频率有315M、390M、433.92MHz等选择,外部电路非常简捷。不但具有接收灵敏度高,温度特性好,抗干扰能力强,通信距离远,且可通过欧美规范认证,应用到您的无线设备中,为您的产 ...…

查看全部问答>

PDF文档密码清除器

本帖最后由 paulhyde 于 2014-9-15 03:16 编辑 这东西有些时候有用啊!    …

查看全部问答>

交通灯设计

含仿真图和详细C程序…

查看全部问答>

请问DCDC中反馈端加入的Cfwd主要起什么作用?

今天在看一个datasheet of DCDC BUCK过程中,看到反馈端到Vout有一个Cfwd,不知道是做什么用的?请教各位 是不常么?…

查看全部问答>

请教s3c2410的gpio问题

我想读GPF3的状态变化,该如何配置其相应的寄存器啊,望高手指教!…

查看全部问答>

PC机与单片机通过RS232串口通信,请各位哥哥姐姐帮忙修改下错误,小弟确实不知道从哪修改

下面是一个PC机与单片机通过RS232串口通信,PC机上C程序(对8250的初始化,PC机发送接受程序) 请各位哥哥姐姐帮忙修改下错误,小弟确实不知道从哪修改 //////////////////////////////////////////////////////////////////// //函数名:RS23 ...…

查看全部问答>

高手帮忙看一下,MPlayer在s3c2410上移植的问题.急!!

在移植MPlayer到s3c2410上时遇到一个问题,就是在配置事遇到不能配置成功,所以现在还不能make 我的./configure是这样的: ./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-armv41-linux --enable-static --prefix=/tmp/mplayer --disab ...…

查看全部问答>

TLC5615怎么用,怎样通过单片机控制其输出电压?

请问各位,TLC5615怎么用,怎样通过单片机控制其输出电压?比如说我的基准电压为7.5V,怎样让它的输出变成8V\\9V\\10V等等…

查看全部问答>

硬件学习问题

想问下各位怎么学习硬件知识啊,需要去学习什么内容 啊?有经典书籍提供否…

查看全部问答>

实现快速乘法器

1. 串行乘法器两个N位二进制数x、y的乘积用简单的方法计算就是利用移位操作来实现。module multi_CX(clk, x, y, result); input clk; input [7:0] x, y; output [15:0] result; reg [15:0] re ...…

查看全部问答>