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,今天整理下,弄个氛围灯;记录下,以后忘记了返回来还能看看。...

STM8 中关于PWM1 和 PWM2的区别

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

STM8S PWM 应用 呼吸灯

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

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

前段时间使用STM8S003F3实现了一个三基色灯的各种效果,故写一篇文章作为一个记录。 1 综述 我们知道,要是的LED灯亮直接通电即可。而要改变灯的亮度,我们有两种方法:改变电流和PWM调光。 我...

stm8程序设计之PWM

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

STM8S003xx学习笔记(2):16位高级控制定时器(TIM1)

在单片机中定时器是一个非常重要的概念,这篇文章主要是对定时器TIM1做一个学习笔记。 1 综述 STM8S003xx只含有TIM1、TIM2、TIM4,其中TIM1是高级控制寄存器,TIM2和TIM4...

stm8s003MCU_PWM_引脚功能配置

最近在使用stm8s003MCU进行一款LED灯产品的开发。我使用的是TIM2的PWM输出功能,使用TIM2_CHANNEL3,PA3引脚复用为TIM2_CH3。 一、如何复用PA3引脚为TIM2_...
  • spdian
  • spdian
  • 2017年01月11日 17:11
  • 2378

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

STM8四路PWM配置

void pwm_color_init(void)  {  //    uint16 v; volatile uint8 c;  /*datasheet 44,opt2 Port C5 a...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM8单片机PWM应用(跟着别人学)
举报原因:
原因补充:

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