资源简介
在STM8S003系统上实现芯片PWM功能。通过定时器实现占空比可调。
代码片段和文件信息
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include “stm8s103f3p.h“
_Bool LED1 @PB_ODR:5; //位定义 PB5定义为输出
/*
将PD2口复用为TIM2_CH3然后输出占空比可调的PWM波
TIM2_CH3_PWM
PD2 output
PB5 output
*/
void delay_ms(unsigned int Tms)
{
unsigned int a;
while(Tms--)
{
for(a=0; a<=500; a++);
}
}
void CLK_Init(void)
{
CLK_ICKR|=0x01; //高速内部RC振荡器使能 高速内部RC开
CLK_CKDIVR |=0x08; //16M内部RC 2分频 = 8M
while(!(CLK_ICKR&0x02)); //高速内部振荡器准备就绪 HSI准备就绪
CLK_SWR=0xe1; //设置HSI为主时钟源
}
//**************************************************************//
//**************要在烧写软件中设置TIM2的复用功能****************//
//**************************************************************//
void Tim2_Init(void)
{
TIM2_CCMR3|=0x70; //设置定时器2通道3(PD2)输出比较3模式 PWM2模式2 向上计数时CNT TIM2_CCMR3|=0x04; //输出比较3快速使能 加快输出对触发事件的响应 禁止CCR寄存器预装载功能
TIM2_CCER2|=0x03; //低电平有效 开启信号输出到对应输出引脚
TIM2_PSCR=0x07; //预分频器的值为6 计数器的时钟频率为 8M/(7+1)=1M
//TIM2_ARRH=62500/256; //初始化自动重装载寄存器,决定了PWM的频率。f=1M/62500=16HZ
//TIM2_ARRL=62500%256; //
TIM2_ARRH=0;
TIM2_ARRL=100;
//TIM2_CCR3H=31250/256; //比较寄存器 如果未选择预装载功能 写入的数值会立即传输至当前寄存器中
//TIM2_CCR3L=31250%256; //决定了PWM的占空比 31250/62500=0.5
TIM2_CCR3H=0;
TIM2_CCR3L=50;
TIM2_CR1|=0x81; // ARR寄存器由预装载缓冲器缓冲 使能计数器
}
//调节频率占空比
void PWM_DC_T_DT(unsigned int DCunsigned int T)
{
//设置PWM频率 Fpwm=8M/ARR
TIM1_ARRH = 0; //设定自动重装载值高8位
TIM1_ARRL = T; //设置自动重装载值低8位 PWM的周期
//设置占空比 TIM1_CNT TIM1_CCR1H = 0; //捕获比较寄存器高8位 未选择预装载功能时,写入的数值立即传输至当前寄存器中。
TIM1_CCR1L = DC; //捕获比较寄存器低8位 占空比值 当前寄存器的值同计数器TIM1_CNT的值比较,并在OC1端口上产生输出信号
TIM1_CR1 |= 0x01; //控制寄存器 使能TIM1计数器 默认边沿对齐模式 向上计数 发生更新事件时计数器不停止 TIM1_ARR寄存器没有缓冲可以被直接写入
TIM1_BKR |= 0x88; //刹车寄存器 主输出使能 使能OC1输出 禁止刹车输入 定时器不工作时OC1输出无效电平
}
/*单片机管脚初始化
DDR CR1 CR2 引脚设置
0 0 0 悬浮输入
0 0 1 上拉输入
0 1 0 中断悬浮输入
0 1 1 中断上拉输入
1 0 0 开漏输出
1 1 0 推挽输出
1 X 1 输出(最快速度为10MHZ)
*/
//DDR 设置输入输出方向 0 输入 1输出
//CR1 设置输入输出方式 DDR=0: 0浮空输入 1带上拉电阻输入。 DDR=1: 0模拟开漏输出 1推挽输出。
//CR2 设置中断和输出速度 DDR=0: 0禁止外部中断 1使能外部中断。 DDR=1:0 输出最大速度为2M 1输出最大速度为10M。
void GPIO_Init(void)
{
PD_DDR|=0x04; //PD2 输出
PD_CR1|=0x04; //PD2 推挽输出
PC_CR2&=0xfb; //输出最大速度为2M
PB_DDR|=0x20; //PB5 输出
PB_CR1|=0x20; //PB5 推挽输出
PB_CR2|=0xdf; //输出最大速度为2M
}
main()
{
int i;
CLK_Init();
GPIO_Init();
Tim2_Init();
while (1)
{
//占空比从1%到100%增加
for(i=0; i<100; i++)
{
LED1=0; //通过位操作 LED指示灯亮
delay_ms(20);
PB_ODR|=0x20; //LED指示灯灭
delay_ms(20);
//TIM2_CCR3H=0; //调占空比
//TIM2_CCR3L=i;
PWM_DC_T_DT(i30);
}
//占空比从100%到1%减小
for(i=100; i>0; i--)
{
LED
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11888 2017-10-26 17:43 PWM\Debug\main.ls
文件 16025 2017-10-26 17:43 PWM\Debug\main.o
文件 14114 2017-10-26 17:43 PWM\Debug\pwm.elf
文件 2288 2017-08-26 16:22 PWM\Debug\pwm.lkf
文件 18299 2017-10-26 17:43 PWM\Debug\pwm.map
文件 1432 2017-10-26 17:43 PWM\Debug\pwm.s19
文件 16177 2017-10-26 17:43 PWM\Debug\pwm.sm8
文件 5420 2017-08-26 18:19 PWM\Debug\stm8_interrupt_vector.ls
文件 2619 2017-08-26 18:19 PWM\Debug\stm8_interrupt_vector.o
文件 4220 2017-08-26 18:19 PWM\main.c
文件 470 2017-10-31 18:04 PWM\pwm.dep
文件 897 2017-10-31 16:24 PWM\pwm.pdb
文件 12234 2017-08-26 16:47 PWM\pwm.stp
文件 195 2017-10-31 18:04 PWM\pwm.stw
文件 49243 2017-10-31 18:04 PWM\pwm.wdb
文件 50930 2017-10-31 18:04 PWM\pwm.wed
文件 2292 2017-08-26 16:22 PWM\Release\pwm.lkf
文件 1954 2007-11-13 16:37 PWM\stm8_interrupt_vector.c
目录 0 2017-10-14 11:37 PWM\Debug
目录 0 2017-10-14 11:37 PWM\Release
目录 0 2017-10-31 18:04 PWM
----------- --------- ---------- ----- ----
210697 21
相关资源
- 戴森-施温格方程在有限球体积中的手
- Intel(R) 82579V网卡驱动for server20033
- Hillstone SA-2003高性能纯硬件安全网关产
- STM8S003 红外遥控
- 基于ARM7 PWM定时器的图像传感器时序信
- STM8S例程,基于IAR下的STM8S例程
- Convex Analysis and Optimization (Bertsekas
- 电力电子技术(第4版)_王兆安_带目
- DS4000存储系统上Microsoft Exchange 2003的存
- 最新BW量产工具——BW_Tool_v2.0
- 联想rd630服务器驱动 for win2003 x64
- 基于FAN6754A的PWM反激式开关电源的设计
- 采用双闭环控制提高PWM的电源纹波抑
- WindowsServer2003.WindowsXP-KB926139-v2-x64-EN
- N76E003开发资料最新SDK参考代码
- 基于STM8的HT1621B显示驱动程序
- STM8驱动HT1621B
- FPGA实现单极性SPWM调制
- LCL滤波器在三相PWM整流器中的应用
- WD硬盘 771640003 通吃固件
- CPS―SPWM调制方法在H桥多电平变流器中
- 基于FPGA的多电平载波移相SPWM方法实现
- 正弦波逆变器正弦波逆变器的工作原
- H310阵列卡驱动x64位_win2003 64位raid驱动
- dell服务器H310\\H710阵列卡驱动程序 f
- WINDOWS SERVER 2003网卡驱动程序
- 语音回示在GSM-R手持终端中的实现
- 基于DSP的SVPWM变频调速系统
- 采用单片机SPWM的控制应急电源逆变电
- PWM脉宽调制的原理
评论
共有 条评论