STM8单片机PWM应用(跟着别人学)

转载 2012年03月30日 19:37:40
PD3复用功能是TIM2_CC2,正好可以用来测试PWM功能。本例程通过电位器调整PWM脉宽来调整接在PD3的LED1亮度。

#include <iostm8s207sb.h>

void CLK_init(void)
{
  CLK_CKDIVR = 0x08;         // 16M内部RC经2分频后系统时钟为8M
}

void GPIO_init(void)
{
  PD_DDR = 0x08;             // 配置PD端口的方向寄存器PD3输出
  PD_CR1 = 0x08;             // 设置PD3为推挽输出
}

void TIM2_init(void)
{
  TIM2_CCMR2 = 0x70;         // PWM 模式 2
  TIM2_CCER1 = 0x30;         // CC2配置为输出
  TIM2_ARRH = 0x03;           // 配置PWM分辨率为10位,ARR=0x3FF
  TIM2_ARRL = 0xFF;           // PWM频率=8M/0x03FF=7820Hz
  TIM2_CR1 = 0x01;           // 计数器使能,开始计数
}

void ADC_init(void)
{
  ADC_CSR = 0x03;            // ADC输入引脚AIN3
  ADC_CR1 = 0x01;            // ADC开启
}

void Run(void)
{
  unsigned int value;
  ADC_CSR &= ~0x80;       // 清除EOC转换结束标志
  ADC_CR1 |= 0x01;           // 开始单次转换
  while(!(ADC_CSR&0x80));    // 等待单次转换完成
  value = ((int)ADC_DRH<<2); // 先读高8位,默认设置数据左对齐
  value |= ADC_DRL;                 // 再读低8位
  TIM2_CCR2H = (unsigned char)(value>>8);   // 更新CC2比较寄存器
  TIM2_CCR2L = (unsigned char)(value);
}

void init_devices(void)
{
  asm("sim");  //禁止中断
  CLK_init();
  GPIO_init();
  TIM2_init();
  ADC_init();
  asm("rim");  //使能中断
}

void main( void )
{
  init_devices();

  while(1)    Run();
}

STM8S的按键PWM调光灯历程

STM8SPWM应用前几天有个项目用到PWM,今天整理下,弄个氛围灯;记录下,以后忘记了返回来还能看看。...
  • rp517045939
  • rp517045939
  • 2016年11月16日 15:09
  • 2948

STM8S PWM 应用 呼吸灯

//主功能接受:使用MCU STM8S105C6 的PWM通道2 PC2 来做呼吸灯 已经验证OK,呵 呵,这个PWM设置刚开始用还是有点麻烦,因为是自己摸索,花点时间,还是攻克了 。 //所用子...
  • chuangwu2009
  • chuangwu2009
  • 2014年05月20日 11:41
  • 6652

stm8程序设计之PWM

stm8程序设计之PWM 转自:http://blog.sina.com.cn/s/blog_72359bde0100y6we.html 在单片机应用系统中,也常常...
  • xlhcgd
  • xlhcgd
  • 2016年04月06日 00:04
  • 1578

STM8 中关于PWM1 和 PWM2的区别

STM8中PWM1和PWM2模式是时钟输出PWM波形控制的一个必选参数,使用库函数原型如下: void TIMx_OC2Init(TIM2_OCMode_TypeDef TIM2_OCMod...
  • Acelpoetry
  • Acelpoetry
  • 2016年12月14日 12:12
  • 1776

STM8四路PWM配置

void pwm_color_init(void)  {  //    uint16 v; volatile uint8 c;  /*datasheet 44,opt2 Port C5 a...
  • baiyibin0530
  • baiyibin0530
  • 2015年10月21日 12:37
  • 1209

STM8硬件PWM设置

最近在折腾STM8,边学边用,发现自己很多不懂的啊, 写这篇博客记录一下这几天使用PWM给电机调速的心得,也为以后再次使用留个技术存档。 1.初始化定时器 TIM2_TimeBaseInit(T...
  • chicken_wing_is_good
  • chicken_wing_is_good
  • 2015年05月25日 19:32
  • 1991

STM8S的TIM1 PWM设置(寄存器版本)

1. 概述脉冲宽度调制(PWM)模式可以产生一个由TIM1_ARR寄存器确定频率、由TIM1_CCRi寄存器确定占空比的信号。2. 芯片资料参考STM8S datasheet如下资料: 在TIM1...
  • Simon_ce
  • Simon_ce
  • 2017年02月08日 17:58
  • 2819

stm8s PWM程序

  • 2014年03月11日 13:55
  • 1KB
  • 下载

【STM8L】STM8L之timer2产生PWM

本文介绍STM8L系列如何使用timer2产生38K频率的PWM
  • feilusia
  • feilusia
  • 2016年11月30日 03:17
  • 3183

STM8S003F3通过PWM波实现三基色呼吸灯

前段时间使用STM8S003F3实现了一个三基色灯的各种效果,故写一篇文章作为一个记录。 1 综述 我们知道,要是的LED灯亮直接通电即可。而要改变灯的亮度,我们有两种方法:改变电流和PWM调光。 我...
  • L20130316
  • L20130316
  • 2015年11月11日 13:44
  • 10147
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM8单片机PWM应用(跟着别人学)
举报原因:
原因补充:

(最多只允许输入30个字)