历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2018年09月16日 | STM32 使用TIM2_CH1(PA15) 输出10K PWM信号

2018-09-16 来源:eechina

PA15-> TIM2 Remap CH1


1.apb_init()

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);


2.gpio_init()

    #define PWM_GPIO_IDX                        8                   //PA15

    #define PWM_GRP                             GPIOA

    #define PWM_PIN                             GPIO_Pin_15

    #define PWM_MODE                            GPIO_Mode_AF_PP


    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);    //disable JTAG

    GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);       //TIM2 Remap CH1->PA15  


3.pwm_init()

    /*

    72M / 10K = 720

    period = 720-1 = 719

    10分频: prescaler = 10-1 = 9

    */

    #define LF_PERIOD                                   719                     //周期

    #define LF_PRESCALER                                9                       //分频

    #define LF_PULSE                                    360                     //占空比


    void lf_init(void){


        TIM_DeInit(TIM2);//将外设 TIMx 寄存器重设为缺省值

        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

         /* Time base configuration */

        TIM_TimeBaseStructure.TIM_Period = LF_PERIOD;//设置了在下一个更新事件装入活动的自动重装载寄存器周期的值

        TIM_TimeBaseStructure.TIM_Prescaler = LF_PRESCALER;//设置了用来作为 TIM1 时钟频率除数的预分频值

        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;// 设置了时钟分割

        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//选择了计数器模式


        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//根据 TIM_TimeBaseInitStruct 中指定的参数初始化 TIMx 的时间基数单位


        TIM_OCInitTypeDef TIM_OCInitStructure;

        /* PWM1 Mode configuration: Channel1 */

        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//选择定时器模式

        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//选择输出比较状态

        TIM_OCInitStructure.TIM_Pulse = LF_PULSE;//设置了待装入捕获比较寄存器的脉冲值

        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性


        TIM_OC1Init(TIM2, &TIM_OCInitStructure);//根据 TIM1_OCInitStruct 中指定的参数初始化 TIM1 通道 1


        TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);//使能或者失能 TIMx 在 CCR1 上的预装载寄存器


        TIM_ARRPreloadConfig(TIM2, ENABLE);//使能或者失能 TIMx 在 ARR 上的预装载寄存器


        TIM_Cmd(TIM2, ENABLE);//使能或者失能 TIMx 外设

    }

TIM2_Remap

/* -----------------------------------------------------------------------

  //对PWM的频率占空比解析

  TIM3 Configuration: generate 4 PWM signals with 4 different duty cycles:

  The TIM3CLK frequency is set to SystemCoreClock (Hz), to get TIM3 counter

  clock at 24 MHz the Prescaler is computed as following:

   - Prescaler = (TIM3CLK / TIM3 counter clock) - 1

  SystemCoreClock is set to 72 MHz for Low-density, Medium-density, High-density

  and Connectivity line devices and to 24 MHz for Low-Density Value line and

  Medium-Density Value line devices


  The TIM3 is running at 36 KHz: TIM3 Frequency = TIM3 counter clock/(ARR + 1)

                                                = 24 MHz / 666 = 36 KHz

  TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50%

  TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100 = 37.5%

  TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100 = 25%

  TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100 = 12.5%

    uint16_t CCR1_Val = 333;

    uint16_t CCR2_Val = 249;

    uint16_t CCR3_Val = 166;

    uint16_t CCR4_Val = 83;

----------------------------------------------------------------------- */


//以下为解决停止pwm信号后偶发出现高电平 2018-08-11

void PwmControl(BOOL bCon){

    if(bCon){

        TIM_ForcedOC1Config(TIM2, TIM_ForcedAction_Active);

        TIM_Cmd(TIM2, ENABLE);

    }else{

        TIM_Cmd(TIM2, DISABLE);

        TIM_ForcedOC1Config(TIM2, TIM_ForcedAction_InActive);   //设置为非活动状态,低电平

    }

}


推荐阅读

史海拾趣

Exel Microelectronics Inc公司的发展小趣事

随着全球对环保问题的日益关注,Exel Microsystems Inc公司也积极响应,履行环保责任。公司在XXXX年开始实施绿色生产战略,通过采用环保材料、优化生产流程等措施,降低了生产过程中的能耗和废弃物排放。此外,Exel还积极参与环保公益活动,推动行业和社会的可持续发展。这些举措不仅彰显了公司的社会责任感,也为公司赢得了良好的社会声誉。

EBK Kruger GmbH & Co KG公司的发展小趣事

面对数字化浪潮的挑战,EBK Kruger积极拥抱数字化转型。公司引入了先进的ERP系统和智能制造技术,提高了生产效率和产品质量。同时,EBK Kruger还加强了对大数据和人工智能技术的研发和应用,为客户提供了更加智能化和个性化的产品和服务。通过数字化转型的推动,EBK Kruger在激烈的市场竞争中保持了领先地位。

ADDtek公司的发展小趣事

为了提升产品质量和满足客户需求,EBK Kruger开始建立严格的质量管理体系。公司引进了国际先进的生产设备和检测设备,并对员工进行了系统的质量培训。通过不懈的努力,EBK Kruger的产品质量得到了显著提升,赢得了客户的广泛赞誉。同时,公司还获得了多项国际质量认证,进一步提升了品牌形象。

GarrettCom公司的发展小趣事

转折:2006年,GarrettCom迎来了一个重要的转折点——收购变电站网络产品领导者DYMEC公司。这一收购不仅增强了GarrettCom在变电站自动化领域的实力,还为其带来了更多的技术资源和市场份额。

影响:通过整合DYMEC的技术和产品,GarrettCom进一步巩固了其在变电站网络通信技术方面的领先地位。公司的产品和解决方案被广泛应用于全球各地的变电站项目中,为电力系统的稳定运行提供了坚实的通信保障。

Engineered Components Co公司的发展小趣事

在稳固了国内市场后,ECC开始积极拓展国际市场。他们参加了多个国际电子展会,展示了公司的技术和产品。通过与国际客户的交流与合作,ECC逐渐打开了国际市场的大门。同时,ECC还与国际知名电子企业建立了长期合作关系,共同研发新产品、开拓市场。这些举措使得ECC在国际市场上的知名度不断提升。

Clulite公司的发展小趣事
  1. 创业初期
    • 描述Clulite公司的创始人或核心团队如何识别电子行业中的某个市场机遇。
    • 讲述他们是如何筹集初始资金,设立公司,并开发出第一款产品或解决方案的。
    • 可以提及公司在初创阶段面临的挑战,如技术难题、市场竞争等。
  2. 技术创新
    • 讲述Clulite如何通过研发创新,推出了一款颠覆性的产品或技术,从而获得了市场认可。
    • 详细描述这一创新过程,包括研发团队的努力、关键技术的突破等。
    • 提及这一创新如何帮助公司在市场上取得了竞争优势。
  3. 市场拓展
    • 描述Clulite如何逐步扩大市场份额,从地区市场走向全国乃至国际市场。
    • 可以讲述公司如何建立销售网络、与合作伙伴建立合作关系,以及参与行业展会等活动来推广品牌和产品。
    • 提及公司在市场拓展过程中遇到的挑战和应对策略。
  4. 品质管理
    • 讲述Clulite如何注重产品质量和客户体验,通过严格的质量控制流程来提升产品可靠性。
    • 描述公司如何建立完善的售后服务体系,为客户提供及时、专业的支持。
    • 提及这些举措如何帮助公司赢得了客户的信任和口碑。
  5. 可持续发展
    • 讲述Clulite如何关注环境保护和社会责任,推动公司的可持续发展。
    • 描述公司如何采取环保措施,减少生产过程中的污染排放。
    • 提及公司如何参与社会公益事业,回馈社会。

请注意,这些故事需要根据Clulite公司的实际情况进行调整和补充。如果你需要更具体的内容,建议查阅Clulite公司的官方网站、新闻报道或行业分析报告,以获取更详细的信息和数据。

问答坊 | AI 解惑

外壳带电问题

一次在维修机器的时候,我同时碰到了机顶盒的外壳和维修台的接地端,给电了一下.测量测外壳时居然发现外壳带电,电压有50V,后来查了下资料,说外壳带电属正常现象,具体跟电路板与外壳之间的电抗Z1和外壳与地之间的电抗Z2有关,可简单理解为Z1与Z2串联,外 ...…

查看全部问答>

发明器,让人们专门搞发明的设备

发明器,让人们专门搞发明的设备小编记得有互联网投资皇帝之称的孙正义先生在年轻时就曾经应用了一个有趣的发明器来赞助自己搞创新,它的原理是可以将很多风马牛不相及的东西自由排列组合在一起,使你产生新的想法解决人们新的需求。成果依附这个发 ...…

查看全部问答>

弱问,关于网络驱动程序

首先,我是新手,没有接触过网卡驱动程序开发,仅看过windows上一个中间层的驱动代码。 我有些问题:    ndis仅仅是windows上的东西吗?    windows上开发一个驱动程序必须按照ndis吗?    网卡制造商如果仅有wi ...…

查看全部问答>

优化高亮度LED的使用寿命 ESD保护考虑事项

随着亮度和能效的提升,延长使用寿命已经为促进基于高亮度发光二极管(HB-LED)的固态照明设计快速发展的主要因素之一。然而,并非所有HB-LED在这些方面都旗鼓相当,制造商应用静电放电(ESD)保护的方式可能是影响HB-LED现场使用寿命的一个至关键 ...…

查看全部问答>

微型编程器电路

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 …

查看全部问答>

香水城,再请教你2个问题,cosmicc的环境st72324

问题1:I2Cms 是定义的全局变量,I2Cms 在1毫秒定时器里累加,现在的问题    I2Cms = 0;    while(I2Cms<=10)    {    }这个while根 ...…

查看全部问答>

swimerror[30004]:commtimeout

评估板原先还好好的,就先前调触摸按键拆了充放电的电阻,有个脚的3.3M还没焊接回去。这段时间一直用板子的5V供电。刚刚想再看看这块板子,就出现这种情况,STVD的help里也找不到相关信息额。 STLINK是没问题的,因为我还可以用它debug。 评 ...…

查看全部问答>

【设计工具】高速环境下的状态机设计和优化技巧

通过减少寄存器间的逻辑延时来提高工作频率,或通过流水线设计来优化数据处理时的数据通路来满足高速环境下FPGA或CPLD中的状态机设计要求。本文给出了采用这些技术的高速环境状态机设计的规范及分析方法和优化方法,并给出了相应的示例。   为了 ...…

查看全部问答>

低功耗DDS波形发生器设计资料分析

低功耗DDS波形发生器设计资料分析(原理图、布局文件、物料清单) …

查看全部问答>