历史上的今天
返回首页

历史上的今天

今天是:2025年04月13日(星期日)

正在发生

2018年04月13日 | STM8S---定时器产生PWM(TIM2)

2018-04-13 来源:eefocus

1 说明

  • 采用STM8S内部时钟(HSI);

  • PWM模式2;

  • 占空比为50%,频率为2Hz(方便测试LED灯);

  • PD2口外接LED灯,PD2口输出PWM波;

  • 系统时钟初始化很重要:CLK_CKDIVR |= 0x08;

2 代码


/*

TIM2_CH3 PWM

PD2 output

*/

#include


void CLK_init(void)

{

    CLK_ICKR |= 0X01;           //使能内部高速时钟 HSI

    CLK_CKDIVR |= 0x08;         //16M内部RC经2分频后系统时钟为8M

    while(!(CLK_ICKR&0x02));    //HSI准备就绪 

    CLK_SWR=0xe1;               //HSI为主时钟源 

}


void Init_Tim2(void)

{

    TIM2_CCMR3 |=   0X70;   //设置定时器2三通道(PD2)输出比较三模式

    TIM2_CCMR3 |= 0X04;     //输出比较3预装载使能


    TIM2_CCER2 |= 0x03;     //通道3使能,低电平有效,配置为输出


    //初始化时钟分频器为1,即计数器的时钟频率为Fmaster=8M/64=0.125MHZ

    TIM2_PSCR = 0X06;   

    //初始化自动装载寄存器,决定PWM 方波的频率,Fpwm=0.125M/62500=2HZ

    TIM2_ARRH = 62500/256;

    TIM2_ARRL = 62500%256;

    //初始化比较寄存器,决定PWM 方波的占空比:5000/10000 = 50%

    TIM2_CCR3H = 31250/256;

    TIM2_CCR3L = 31250%256;



    // 启动计数;更新中断失能

    TIM2_CR1 |= 0x81;

    //TIM2_IER |= 0x00;        

}


void Init_GPIO(void)

{

    /*设置为推挽输出,PD2接了LED灯*/

    PD_DDR |= 0X04;             //设置PD2端口为输出模式

    PD_CR1 |= 0X04;             //设置PD2端口为推挽输出模式

    PD_CR2 &= 0XFD;


    PA_DDR |= 0X08;             //设置PA3端口为输出模式

    PA_CR1 |= 0X08;             //设置PA3端口为推挽输出模式

    PA_CR2 |= 0XF7;

}


void main(void)

{

    CLK_init();

    Init_GPIO();

    Init_Tim2();

    while (1);

}


推荐阅读

史海拾趣

Altech公司的发展小趣事

为了适应市场的快速变化和公司业务的不断扩张,Altech公司决定将深圳工厂整体搬迁至广州南沙。这一搬迁不仅优化了公司的生产布局,还为公司提供了更加广阔的市场发展空间。搬迁后的工厂引进了先进的生产设备和技术,进一步提升了公司的生产效率和产品质量。

Dfx公司的发展小趣事

某消费电子公司在生产过程中经常遇到质量问题,导致产品退货率居高不下。为了解决这个问题,该公司引入了DFX的设计理念,对产品设计、生产和测试等环节进行了全面优化。通过改进生产工艺、优化材料选择和加强质量控制等手段,该公司成功提高了产品的质量和可靠性,降低了退货率,赢得了消费者的信任。

Gems Sensors & Controls公司的发展小趣事

Gems Sensors & Controls公司始终致力于技术创新和产品研发。数十年来,公司不断推出新型号的液位、流量和压力传感器、微型电磁阀及预装射流系统等产品,以满足客户日益多样化的需求。这些产品凭借其卓越的性能和稳定的质量,在行业内赢得了广泛的赞誉和认可,也推动了整个传感器行业的进步和发展。

广东奥科公司的发展小趣事

广东奥科公司深知品质是企业生存和发展的关键。因此,公司始终将品质管理放在首位,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把控品质。同时,公司还建立了完善的品质管理体系和持续改进机制,通过不断优化生产工艺和提升产品质量,确保每一款产品都能满足客户的期望和需求。

EPSON公司的发展小趣事

EPSON公司,原名精工爱普生,成立于1942年,最初以制造手表起家。然而,随着技术的不断进步和市场需求的变化,EPSON逐渐将业务扩展到电子领域。在创始人及其团队的带领下,EPSON凭借其卓越的技术创新能力,成功研发出了一系列具有划时代意义的电子产品,如世界上第一台微型打印机和喷墨打印机,奠定了其在电子行业的领先地位。

ELPIDA公司的发展小趣事

ELPIDA公司成立于1999年,是日本在DRAM(动态随机存取存储器)领域的重要企业。它的成立是对当时日本半导体产业的一次重要整合,由NEC、日立、三菱电机等公司的DRAM业务合并而成。这一举措旨在振兴日本在DRAM领域的竞争力,并保护国内DRAM产业。

问答坊 | AI 解惑

电机的控制

用的是直流电机,信号由PWM来控制,采用H桥驱动,经过齿轮箱,把旋转运动转化为直线运动,负载是控制弹簧的开度。 有人告诉我,电机的电压越大,电流越小,这是为什么? 当电机扭矩不够大,带不动负载时,电机是什么状态,转还是不转? 当电机把 ...…

查看全部问答>

中兴通讯电源输入端口的电磁兼容设计

中兴通讯电源输入端口的电磁兼容设计…

查看全部问答>

电路板新手问一些电路板上的基础问题

不知道发在什么版合适,看来看去还是发在这个版块了~ 现在我在学习电路板、电路图的知识。以前在学校虽然学习过模电数电但是毕竟没有怎么接触过真东西,只是理论知识。 现在手头有一块电路板,我需要画出它的电路图来。面临的问题是,我不懂电路 ...…

查看全部问答>

qt串口编程的问题

make后提示 serialthread.h 语法错误,但没发现serialthread.h中的语法错误。为什么编译不成功呢?? [root@localhost qt-1]# make g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/working/qt/q ...…

查看全部问答>

WinCE 3G卡 USB驱动 求救

dear all: 小弟最近做一个HW的3G卡,WinCE下的USB虚拟串口驱动,在USB中,有8组接口,用了其它的一组有2个端点,8号端点OUT写数据,88号端点IN读取数据,为什么能写成功,IN不到数据呢,望大家指教, 代码如下: dw = IssueBulkTransfer( pDrv-> ...…

查看全部问答>

wince下能调通的程序不能执行!

我通过#pragma 引入了几个lib文件,还需要在项目属性中手动输入那些文件吗? 我生成exe文件后运行的时候显示0x8007007e错误  我又把那些lib文件手工复制到模拟器中,放在exe文件的目录下还是不能执行 请问这是怎么回事? …

查看全部问答>

刚完成了一个CycloneIII fpga开发板,将CycloneIII设计中的问题分享一下,持续更新

我所使用的芯片是Cyclone III EP3C5E144,与ep3c10e144是引脚兼容,没有去兼容ep3c16和25,因为用户IO相差太大, 本来qfp144的封装io就不太多,ep3c16和25就没有考虑。 ep3c5有5136个逻辑资源,跑普通的Verilog代码和niosII 完全 ...…

查看全部问答>

恩智浦充分挖掘多功能汽车钥匙的潜能

推出市场就绪型NFC“智能”汽车钥匙 中国上海,2011年6月15日 --\" 智能\"汽车钥匙市场的先驱--恩智浦半导体NXP Semiconductors N.V. (NASDAQ:NXPI) 今日宣布推出针对多功能汽车钥匙的生产就绪单芯片解决方案--NCF2970 (KEyLink L ...…

查看全部问答>

g729编解码 感谢cl 教一个从没有学过信号处理相关的计算机白痴

  目前在做16位芯片上的g729解码算法。我一个连语音编解码算法最基础的课程都没有学过的计算机白痴,在项目组长CL的帮助下,对g729,有了一个大概的了解。  g729将80bits参数重构成一帧语音,最重要的一个公式是:   80位的比特流分 ...…

查看全部问答>

STM32发送显示数据给串口工业屏的问题,麻烦各位大大来给指导下,万分感谢。。

其实就是用STM32和串口工业屏通信,我写好了数据接收函数,现在是要写发送函数。 但是他给的协议表是这样的: void Uart1_PutStr1(u8 *p,u8 len) { extern UART_TypeDef Uart1_Structure; if(Uart1_Structure.TxStatus) //如果串口正在发 ...…

查看全部问答>