STM8S---定时器产生PWM(TIM2)

发布者:cyzcee最新更新时间:2018-04-13 来源: eefocus关键字:STM8S  定时器  PWM 手机看文章 扫描二维码
随时随地手机看文章

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);

}


关键字:STM8S  定时器  PWM 引用地址:STM8S---定时器产生PWM(TIM2)

上一篇:STM8S---独立按键IO口设置及按下事件问题
下一篇:STM8S---IO复用配置(STVP方式)

推荐阅读最新更新时间:2024-03-16 15:59

STM32L475使用PWM输出波形
本文描述了如何在搭载了 RT-Thread 操作系统的平台上使用 PWM 输出波形,包括 PWM 的应用、配置和驱动的添加等。并给出了在正点原子 STM32L475 pandora 开发板上验证的代码示例。 硬件平台简介 本文基于正点原子 STM32L475 pandora 开发板,给出了 PWM 的具体应用示例代码,由于 RT-Thread 上层应用 API 的通用性,因此这些代码不局限于具体的硬件平台,用户可以轻松将它移植到其它平台上。 STM32L475 pandora 是正点原子推出的一款基于 ARM Cortex-M4 内核的开发板,最高主频为 80Mhz,该开发板具有丰富的板载资源,可以充分发挥 STM32L475
[单片机]
STM32L475使用<font color='red'>PWM</font>输出波形
C51联盟 —— 外部中断+定时器中断
/*****************************************************/ void Int0Init(); //开启外部中断INTR0 void Timer1Init(); //定时器中断 5毫秒@12.000MHz /*****************************************************/ void main() { SEG = 0; Int0Init(); Timer1Init(); while(1); } /*****************************************************/ void FlowLED
[单片机]
STM32通用定时器的基本定时器功能实现灯闪烁
/*MAIN.C*/ /* Includes ------------------------------------------------------------------*/ #include stm32f10x.h #include misc.h /* Private function prototypes -----------------------------------------------*/ void RCC_Configuration(void); void NVIC_Configuration(void); void GPIO_Configuration(void); void TIM3_Conf
[单片机]
高耐压PWM三端开关电源
最简单的5V/5W开关电源实际电路如图所示。图中TOP210IC1)为三端PWM开关。IC1中含有PWM控制器,功率MOSFET和各种保护电路。这种5V/5W开关电源的成本比常用的线性电源成本低。 该电源交流输入电压范围为85"265V,当负载从额定负载的10%变化到100%,电源电压调整率和负载电流调整率可达+-5%。该电源还具有过压、超温保护和限流等功能。 TOP210的D脚为内部输出MOSFET的漏极,C脚为内部误差放大器和反馈电流输入脚,用来调整开关电源的占空比。S脚为内部MOSFET的源极,也是内部控制电路的公共端。 交流输入电压经VD1-VD4整流后的直流高压,加到变压器T1初
[应用]
MSP430单片机定时器学习笔记
msp430 定时器学习笔记 _BIS_SR(LPM2_bits + GIE) //进入LPM3低功耗模式和开总中断允许 中断 #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A(void) { } TACTL timerA控制寄存器 TAR timerA计数器 CCTL0 捕获/比较控制寄存器0 CCRO 捕获/比寄存器0(具有最高中断优先级别,单独使用一个中断向量) CCTL1 捕获/比较寄存器1 CCR1 捕获/比较寄存器1 CCTL2 捕获/比较寄存器2 CCR2 捕获/比较寄存器2 TAIV 中断向量寄存器 其中,定时器,CCR2,
[单片机]
STM32之高级定时器互补输出
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config(void) { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /*
[单片机]
STM8S003xx学习笔记(2):16位高级控制定时器(TIM1)
在单片机中定时器是一个非常重要的概念,这篇文章主要是对定时器TIM1做一个学习笔记。 1 综述 STM8S003xx只含有TIM1、TIM2、TIM4,其中TIM1是高级控制寄存器,TIM2和TIM4是通用定时器,这篇文章介绍的是TIM1。 在《数据手册》中我们可以知道,TIM1是一个应用广泛的高级定时器,由其互补输出,死区时间控制和居中对齐PWM功能。其应用领域扩展到电机控制、灯和半桥驱动。 ● 16位向上、向下、向上/向下自动重装载计数器,并有一个16位预分频器。 ● 四个独立的捕捉/比较通道(CAPCOM)配置为输入捕获、输出比较、PWM生成(边缘和居中对齐模式)和单脉冲输出模式 ● 同步模块的控制外部信号的计时
[单片机]
STM8S003xx学习笔记(2):16位高级控制<font color='red'>定时器</font>(TIM1)
STM32定时器的几种用法
一、常用的定时功能 (1)基本、通用、高级定时器都有最基本的定时功能,定时功能用到的函数如下: HAL_ TI M_Base_Init 初始化定时,包括分频、 预装值等。 HAL_TIM_ConfigClockSource 选择定时器的 时钟 源 HAL_TIM_Base_Start_IT 开始定时器 HAL_TIM_PeriodElapsedCallb ac k 超时后的回调函数 (2)Cubemx的配置,不管什么定时器,都是这个配置,注意开启中断,计算好最终的定时器时钟 (3)代码片段 1 void MX_TIM12_Init(void) 2 { 3 TIM_ClockConfigTypeDef sClo
[单片机]
STM32<font color='red'>定时器</font>的几种用法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved