历史上的今天
返回首页

历史上的今天

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

正在发生

2019年04月27日 | STM32的PWM设置4路相差90度的输出信号

2019-04-27 来源:eefocus

void TIM_Encoder_Config(u16 PPS)//设置编码器的4路相差90度的PWM信号

{

    double    temp = 4000;

    /* Time Base configuration */

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

    TIM_OCInitTypeDef TIM_OCInitStructure;

    TIM_BDTRInitTypeDef TIM_BDTRInitStructure;    

    temp = temp*72/PPS -1;

    TIM_TimeBaseStructure.TIM_Period = (u16)temp - 1; //总周期长度

    TIM_TimeBaseStructure.TIM_Prescaler = 124;     // TIMCLK    

    

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up ;

    TIM_TimeBaseStructure.TIM_ClockDivision = 0;

    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

    TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

    

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;//输出比较模式

    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;

    TIM_OCInitStructure.TIM_Pulse = 0;

    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;

    TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;

    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

    TIM_OC1Init(TIM4, &TIM_OCInitStructure);

    TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);

    //TIM4_OC2模块设置(设置2通道相位)

    TIM_OCInitStructure.TIM_Pulse = (u16)(temp/2-1);//1/4总周期长度

    TIM_OC2Init(TIM4, &TIM_OCInitStructure);

    TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);

    //TIM4_OC3模块设置(设置3通道相位)

    TIM_OCInitStructure.TIM_Pulse = (u16)(temp-1);//1/2总周期长度

    TIM_OC3Init(TIM4, &TIM_OCInitStructure);

    TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);

    //TIM4_OC4模块设置(设置4通道相位)

    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//输出极性:TIM输出比较极性高

    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;

    TIM_OCInitStructure.TIM_Pulse = (u16)(temp/2-1);//3/4总周期长度

    TIM_OC4Init(TIM4, &TIM_OCInitStructure);

    TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);    

    //死区设置

    TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;

    TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;

    TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1;

    TIM_BDTRInitStructure.TIM_DeadTime = 70;  //这里调整死区大小0-0xff

    TIM_BDTRInitStructure.TIM_Break = TIM_Break_Enable;

    TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low;

    TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;

    TIM_BDTRConfig(TIM4, &TIM_BDTRInitStructure);

    

    /* TIM4 counter enable */

    TIM_Cmd(TIM4, ENABLE);

    /* TIM4 Main Output Enable */

    TIM_CtrlPWMOutputs(TIM4, ENABLE);

}

推荐阅读

史海拾趣

Elytone Electronics Co Ltd公司的发展小趣事

Elytone Electronics Co Ltd成立于XXXX年,最初是一家仅有几名员工的小型电子产品加工厂。公司创始人凭借对电子技术的热爱和对市场敏锐的洞察力,带领团队开始了艰苦的创业之路。在资源有限的情况下,他们不断研发新产品,优化生产工艺,逐步在行业内建立起了一定的知名度。

Advanced Linear Devices公司的发展小趣事

近年来,Elytone公司积极响应国家环保政策,致力于推动绿色发展。他们采用环保材料和清洁能源进行生产,减少了对环境的污染。同时,公司还加强了对废弃物的回收和处理工作,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,也为行业的可持续发展做出了积极贡献。

Clover Display Limited公司的发展小趣事

随着中国内销市场的不断扩大,Clover Display Limited看到了巨大的商机。为了更好地服务中国内销客户,公司在2001年在深圳南山区成立了高华电子显示(深圳)有限公司。这家子公司以独资经营方式运作,可以开具增值税发票,以人民币结算,从而更加便捷地服务中国客户。深圳子公司的成立不仅拓宽了公司的销售渠道,也为其在中国市场的进一步发展奠定了坚实基础。

大毅科技公司的发展小趣事

大毅科技于1989年成立,是台湾的一家新兴企业。在公司成立的初期,大毅科技就专注于晶片电阻的研发与生产,这在当时是一个相对新兴且竞争激烈的领域。创始人凭借对技术的深刻理解和敏锐的市场洞察力,带领公司逐步在市场中站稳脚跟。通过不断的技术创新和产品优化,大毅科技逐渐获得了客户的认可,并在行业中树立了自己的品牌。

General Magnetics Inc公司的发展小趣事
选择性能稳定、质量可靠的电子元件,如低损耗的电感、高耐压的电容等。
ELMOS公司的发展小趣事

近年来,中国市场对汽车电子产品的需求不断增长,为ELMOS提供了广阔的发展空间。为了抓住这一发展机遇,ELMOS不断加大在中国的投入力度,扩大其在中国市场的规模和影响力。通过与国内汽车制造商和合作伙伴的深入合作,ELMOS在中国市场取得了显著的成果,并为公司未来的持续发展奠定了坚实的基础。

以上五个故事分别从不同角度展示了ELMOS公司在电子行业中的发展历程和成就。这些故事不仅体现了ELMOS的技术实力和市场竞争力,也展示了公司在全球化和国际化方面的努力和成果。

问答坊 | AI 解惑

手机充电器方案集结贴—更新中,欢迎推荐

基于AP3768 的高效手机充电器方案       近年来,节能环保理念的深入人心,对半导体IC 设计和应用也提出了更高的要求。2008 年11 月,五大手机制造商诺基亚、三星、索尼爱立信、摩托罗拉和LG 电子联合发布了手机充电器的五星 ...…

查看全部问答>

驱动里面CreateThread错误

在驱动程序初始化函数里面,创建一线程         if ( (pAXP182->IST = CreateThread(NULL, 0, AXP182_IST, NULL, 0, NULL)) == NULL)         {         ...…

查看全部问答>

GSM模块发不了短信的问题,大家帮看看。。

我用AT指令通过计算机串口给模块发指令,但是一直不成功,不知道是什么原因? 波特率是115200 我发指令如下: 1.发送:at 返回:OK 2.发送:at+ccid 返回:+CCID: \"89860060190200147245\"      OK 3.发送:at+csq ...…

查看全部问答>

找工作了--北京

2005年6月计算机专业本科毕业,毕业后一直在一个研究所从事软件开发:     a)参与了专业交换机研发, 我主要做交换与维护模块(c  语言+vxWorks)和交换机维护终端软件(vc 6.0)     b)做过专业网控器的组网协 ...…

查看全部问答>

怎样在编辑框中把字的显示放大??

我在对话框下做了一个编辑框,因为编辑框比较大,原始的字的输出比较小,不想改变编辑框的大小,想知道怎么把输入的字的放大一些,有没有简单一些的方法?? 谢谢!!!…

查看全部问答>

求助:工程怎样下载到目标机,可以只运行目标机就可以启动工程啊?

各位路过的大侠,请问:我在主机上装了tornado ,pentium处理器的,做了一个工程,然后通过对等线连接的主机和目标机,目标机是一个HMI,我每次调试的时候都要通过tornado download到目标机里面,然后在tornado里debug,再run,目标机的工程才启动 ...…

查看全部问答>

LM3S8962开发板以太网开发笔记

使用LM3S8962 开发板 学习以太网的相关开发 8962集成了mac 和 phy 貌似没有协议栈, 现在还没看懂例程的lwip 所以索性先随便发数据吧. unsigned char nMACAddr[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB}; 先初始化以太网控制器 SysCtlClockSet( ...…

查看全部问答>

郁闷阿,昨天锁了两个stm32片子

调用了库里的读保护函数,结果,后来stlink2仿真器就连不上了,Jlink下载完就报错。是不是只能用ISP擦了?…

查看全部问答>

能给分析一下这个定义的具体意义吗

__no_init volatile union{  unsigned char IE1;   /* Interrupt Enable 1 */  struct  {    unsigned char WDTIE           : 1; /*  */    unsigned char OFIE   &n ...…

查看全部问答>