STM8S-定时器2的PWM

发布者:chunxing最新更新时间:2015-10-19 来源: eefocus关键字:STM8S  定时器  PWM 手机看文章 扫描二维码
随时随地手机看文章
//软件环境:IAR FOR STM8 V1.0

//作者:Nicole

//功能:定时器2的PWM功能,控制小灯的亮灭间隔

//日期:2010.11.10

#include "iostm8s207k6.h"
void CLK_Init(void);
void TIM_Init(void);
 
// 函数功能:延时函数
// 输入参数:ms -- 要延时的毫秒数,这里假设CPU的主频为2MHZ

void DelayMS(unsigned int ms)
{
  unsigned char i;
  while(ms != 0)
  {
    for(i=0;i<250;i++)
    {
    }
    for(i=0;i<75;i++)
    {
    }
    ms--; 
  }    
}
// 函数功能:初始化时钟

void CLK_Init()
{
  CLK_CKDIVR = 0x08;          //8Mhz
}


// 函数功能:初始化定时器2的通道2,用于控制LED的亮度
void TIM_Init()
{
  TIM2_CCMR1 = TIM2_CCMR1 | 0x70;// Output mode PWM2.         
                                 // 通道2被设置成比较输出方式
                                 // OC2M = 111,为PWM模式2,
                                 // 向上计数时,若计数器小于比较值,为无效电平
                                 // 即当计数器在0到比较值时,输出为1,否则为0
  TIM2_CCER1 = TIM2_CCER1 | 0x03;// CC polarity low,enable PWM output      */
                                 // CC1P = 1,低电平为有效电平
                                 // CC1E = 1,开启输出引脚                

   

//初始化自动装载寄存器,决定PWM方波的频率,Fpwm=1000000/1000=1Khz      

  TIM2_ARRH = 0x03;  // 自动重载寄存器ARR=0x03e8=1000
  TIM2_ARRL = 0xe8;  // 每记数500次产生一次中断,即1000ms
       

//初始化比较寄存器,决定PWM方波的占空比             

  TIM2_CCR1H = 0;
  TIM2_CCR1L = 0;

       

// 初始化时钟分频器为1,即计数器的时钟频率为Fmaster=8Mhz/2*2*2=1000000

  TIM2_PSCR = 0x03;
 
// 启动计数
 

  TIM2_CR1 = TIM2_CR1 | 0x01;

}

 
main()

{
  CLK_Init();                 // 初始化时钟
  TIM_Init();                 // 初始化定时器      
 
  while(1)                    // 进入无限循环
  {
      TIM2_CCR1H = 0x01;
      TIM2_CCR1L = 0xf4;    
   }

}

关键字:STM8S  定时器  PWM 引用地址:STM8S-定时器2的PWM

上一篇:单片机与DSP简单比较
下一篇:STM8S中Option Byte的改写操作

推荐阅读最新更新时间:2024-03-16 14:36

使用STM8S自带BootLoader_2
仔细读ST支持文档 UM0560,按步骤操作。 程序准备工作: 1.开串口接收中断,发送。 /* ******************************************** UART2 configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Receive and transmit enabled - Receive interrupt - UART2 Clock disabled ***********************************
[单片机]
【STM32H7教程】第38章 STM32H7的LPTIM低功耗定时器应用之超时唤醒
38.1 初学者重要提示 学习本章节前,务必优先学习第36章,HAL库的几个常用API均作了讲解和举例。 使用LPTIM的好处是系统处于睡眠、停机状态依然可以正常工作(除了待机模式)。停机状态可以正常工作的关键是LSE,LSI时钟不会被关闭,同时也可以选择使用外部时钟源。 LPTIM的任何中断都可以唤醒停机模式。 STM32H7从停机模式唤醒后要重新配置系统时钟,这点跟F1,F4系列一样。 测试发现STM32H7的LPTIM1的中断可以唤醒停机模式,其它几个LPTIM2-5无法唤醒。详情记录看此贴:http://www.armbbs.cn/forum.php?mod=viewthread&tid=91064 38.2 低功耗定时器
[单片机]
【STM32H7教程】第38章 STM32H7的LPTIM低功耗<font color='red'>定时器</font>应用之超时唤醒
集成肖特基二极管的双路高效率白光LED驱动器驱动多达12 个LED
2007 年 1 月 23 日 - 北京 - 凌力尔特公司( Linear Technology Corporation )推出双路、全功能、升压型 DC/DC 转换器 LT3497 ,该器件从锂离子电池输入驱动多达 12 个白光 LED 。其高效率、固定频率工作确保一致的 LED 亮度和低噪声并最大限度地延长电池寿命,由于有片上肖特基二极管,因此无需外部二极管,从而节省了成本和空间。 True Color PWM TM 调光实现高达 250:1 的调光范围,而 LED 没有任何颜色改变。 LT3497 的两个独立转换器能
[新品]
基于89C2051产生PWM信号来控制直流电机调速程序
本例程利用2051的T0产生双路PWM信号,推动L293D或L298N为直流电机调速,程序已通过调试。接L298N时相应的管脚上最好接上10K的上拉电阻。 /* 晶振采用11.0592M,产生的PWM的频率约为91Hz */ #include reg51.h #include math.h #define uchar unsigned char #define uint unsigned int sbit en1=P1^0; /* L298的Enable A */ sbit en2=P1^1; /* L298的Enable B */ sbit s1=P1^2; /* L298的Input 1 */ sbit s2=P1^3;
[单片机]
STM32 F1 TIM2 4通道PWM同时出波配置
void TIM2_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
[单片机]
MSP430F169 Timer_A原理(一)----定时器的四个模式
Timer_A简介 Timer_A是程序设计的核心,它有一个十六位定时器和多路比较/捕获通道组成。每一个比较/捕获通道都以十六位定时器的定时功能为核心进行单独的控制。 Timer_A特点 1、具有四种工作模式的异步16位定时器/计数器 2、可选择和可配置的时钟源 3、三个可配置的捕获/比较寄存器 4、具有 PWM 功能的可配置输出 5、异步输入和输出锁存 6、用于快速解码所有 Timer_A 中断的中断向量寄存器 Timer_A定时器框图和MSP430F169引脚图 启动定时器 定时器时钟可以来自 ACLK、SMCLK或外部通过 TACLK 或 INCLK。时钟源通过 TASSELx 位选择。选定的时钟源可以直接传递给定时
[单片机]
MSP430F169 Timer_A原理(一)----<font color='red'>定时器</font>的四个模式
MSP430F5529 多路PWM输出控制舵机和电机
MSP430F5529有比较丰富的定时器资源,这次我给大家带来的是输出多路PWM波,可以实现控制舵机,当然简单修改后也可以实现控制电机 实验平台是 TI的MSP-EXP430F5529LP 也就是我们常说的launchpad,相信很多做电赛的小伙伴都是人手一块的 首先先简单的说一下控制电机和控制数字舵机的区别,控制电机的话只需要我们可以输出一定的占空比即可,不需要精确控制周期,然而控制舵机则需要我们准确的控制占空比和周期 。 电机控制我们不多谈,只要保证自己输出的频率不是太低(电机嗡嗡响)也不是太高(太高也会有问题,此处不展开)。 咱们初步设定电机调速用的频率是5KHz。数字舵机的控制需求,我这里就不多说了20ms的周期 高电平持
[单片机]
MSP430F5529 多路<font color='red'>PWM</font>输出控制舵机和电机
51单片机产生pwm 占空比10khz频率 Proteus仿真程序
仿真原理图如下 单片机源程序如下: #include reg51.h #define uchar unsigned char #define uint unsigned int sbit pwm=P1^1; uchar num=0; main() { TMOD=0x02; TH0=TL0=206; ET0=1; TR0=1; EA=1; while(1); } void init() interrupt 1 { num++; if(num =6) pwm=1; else pwm=0; if(num==10)
[单片机]
51单片机产生<font color='red'>pwm</font> 占空比10khz频率 Proteus仿真程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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