• 大小: 36KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: STM8  003  PWM  

资源简介

在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


评论

共有 条评论