//软件环境: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
推荐阅读最新更新时间: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 低功耗定时器
[单片机]
集成肖特基二极管的双路高效率白光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 位选择。选定的时钟源可以直接传递给定时
[单片机]
MSP430F5529 多路PWM输出控制舵机和电机
MSP430F5529有比较丰富的定时器资源,这次我给大家带来的是输出多路PWM波,可以实现控制舵机,当然简单修改后也可以实现控制电机 实验平台是 TI的MSP-EXP430F5529LP 也就是我们常说的launchpad,相信很多做电赛的小伙伴都是人手一块的 首先先简单的说一下控制电机和控制数字舵机的区别,控制电机的话只需要我们可以输出一定的占空比即可,不需要精确控制周期,然而控制舵机则需要我们准确的控制占空比和周期 。 电机控制我们不多谈,只要保证自己输出的频率不是太低(电机嗡嗡响)也不是太高(太高也会有问题,此处不展开)。 咱们初步设定电机调速用的频率是5KHz。数字舵机的控制需求,我这里就不多说了20ms的周期 高电平持
[单片机]
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)
[单片机]