STM8S103F3--PWM配置

摘要:
本文使用的芯片是是stm8s103f3。以下主要说明配置TIM2通道1为PWM输出的过程。bit5,bit4为ch2配置,bit1,bit0为ch1配置如果当前OC1为输出通道,则bit1:OC1低电平有效bit0:OC1信号被输出到当前引脚上TIM2_CCER1=bit0|bit1;//lowlevel,OC1捕获/比较模式寄存器,bit1,bit0CC1S[1:0]为捕获/比较选择00:CC1通道被配置为输出bit2保留bit3输出比较预加载使能0:不使能1:使能bit6,bit5,bit4输出比较模式110:PWM1模式PWM1和PWM2模式区别PWM1:CNTCCR,CH1被激活TIM2_CCMR1=bit3|bit5|bit6;//MODE捕获/比较寄存器,这个寄存器决定着PWM的占空比。

本文使用的芯片是是stm8s103f3。

以下主要说明配置TIM2通道1为PWM输出的过程。

1.寄存器配置

clip_image004

4位预分频器,计数器的计数频率Fck_cnt=Fck_psc/2^(PSC[3:0])=16M/2^0=16M

那么计数周期为1/16us,也就是说计数器会每隔1/16us计数一次。

TIM2_PSCR=0x00; //分频值=0 16M

clip_image006

自动重装载寄存器,

当自动重装载寄存器=0时,计数器处于阻塞状态,也就是不计数状态,因为当CNTR=ARR时,CNTR就会清零,所以配置时自动重装载寄存器应该大于0。另外自动重装载寄存器的值就是PWM波形的周期,比如ARR=0X0100,PWM的周期为0x0100*1/16=16us,PWM的周期就是16us

TIM2_ARRH=0x01; //自动重装的值 0x0100

TIM2_ARRL=0x00;

clip_image008

捕获/比较使能寄存器,这个寄存器的配置可以选通相应的Tim2通道。

bit5,bit4为ch2配置,bit1,bit0为ch1配置

如果当前OC1为输出通道,则

bit1:OC1低电平有效

bit0:OC1信号被输出到当前引脚上

TIM2_CCER1=bit0|bit1; //low level,OC1

clip_image010

clip_image012

clip_image014

捕获/比较模式寄存器,

bit1,bit0

CC1S[1:0]为捕获/比较选择

00:CC1通道被配置为输出

bit2保留

bit3输出比较预加载使能

0:不使能

1:使能

bit6,bit5,bit4输出比较模式

110:PWM1模式

PWM1和PWM2模式区别

PWM1:CNT<CCR,CH1被激活

PWM2:CNT>CCR,CH1被激活

TIM2_CCMR1=bit3|bit5|bit6; //MODE

clip_image016

捕获/比较寄存器,这个寄存器决定着PWM的占空比。CCR/ARR=PWM的占空比,例如设置为0x0060,那么占空比为0x0060/0x0100=6/16

TIM2_CCR1H=0x00;

TIM2_CCR1L=0x60;

clip_image018

中断使能寄存器,如果需要中断可以在此设置。

bit1:CC1E 捕获/比较1中断使能

0:CC1 中断不使能

1:CC1中断使能

TIM2_IER=0x00; //更新中断使能

clip_image020

控制寄存器,bit0控制计数器的打开和关闭。

bit0,计数器使能

0:不使能

1:使能

TIM2_CR1=bit0; //enable counter

通过逻辑分析仪测试PD4管脚的输出电平,波形图如下所示。

clip_image022

源码如下,

//*******************************************

1 #define bit0 0x01 
2 #define bit1 0x02 
3 #define bit2 0x04 
4 #define bit3 0x08 
5 #define bit4 0x10 
6 #define bit5 0x20 
7 #define bit6 0x40 
8 #define bit7 0x80
9 
10   void Timer2_Init(void) 
11 { 
12     CLK_ICKR|=0x01;         //开启内部HSI 
13    while(!(CLK_ICKR&0x02));//HSI准备就绪 
14     CLK_SWR=0xe1;           //HSI为主时钟源 
15     CLK_CKDIVR=0x00;   //HSI,8分频=16M 
16     TIM2_PSCR=0x00;       //分频值=0 16M 
17     TIM2_ARRH=0x01;       //自动重装的值 0x0100 
18    TIM2_ARRL=0x00; 
19    TIM2_CCER1=bit0|bit1; //low level,OC1
20  
21    TIM2_CCMR1=bit3|bit5|bit6;  //MODE 
22   TIM2_CCR1H=0x00; 
23    TIM2_CCR1L=0x60; 
24    TIM2_IER=0x00;        //更新中断使能 
25 
26    TIM2_CR1=bit0;        //enable counter 
27 }
28 int main( void) 
29 { 
30 Timer2_Init(); 
31   while(1){}; 
32 }

免责声明:文章转载自《STM8S103F3--PWM配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CPU从磁盘读取数据过程asp.net几种常见的文件上传、下载的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[SPI].SPI协议详解

转自:http://www.sohu.com/a/211324861_468626 1、 SPI简介 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器...

TI AM335X 网卡驱动解析

1.CPSW驱动及设备的初始化; (1)首先驱动注册cpsw_driver ,会自动进入cpsw_probe执行; 1 static struct platform_driver cpsw_driver = { 2 .driver = { 3 .name = "cpsw", 4 .owner = T...

STM32——timer

原文地址: http://blog.sina.com.cn/s/blog_49cb42490100s6ud.html   1.     STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以...

第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

第51章     设置FLASH的读写保护及解除 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库说明文档《stm32f4xx_dsp_stdperi...

Java内存模型(JMM)总结

Java内存模型(JMM) 我们常说的JVM内存模型指的是JVM的内存分区;而Java内存模型是一种虚拟机规范。 Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:...

RTEMS 进程切换分析(基于i386体系)

在支持多任务操作系统中,进程切换是不可避免的,以使进程能在单个CPU上并发执行。进程的调度涉及到的东西较多,例如调度的时机、调度的策略等等,在这里我们只讨论RTEMS任务调度中进程切换的细节,通过分析以明白操作系统如何做到使一个CPU的使用权如何从一个任务上切换到另一个任务。 下面假设两个任务TASK1和TASK2,当前正在执行的任务executing =...