4周PADS强化班 HOT
林超文手把手教你学!
张飞暑期特训班
教你1000种电路设计思路
年度IP:PFC电源
张飞硬件电路之PFC全集
30天AD项目众筹
参与免费送VIP+原创视频
最全模电系列教程 NEW
运放、ADC、电磁兼容

stm8s pwm输出代码

[复制链接]

等待验证会员

发表于 2018-7-4 02:06:33   53 查看 0 回复 显示全部楼层 倒序浏览
分享
#include "pwm.h"

static void Delay(u16 nCount);
u16 Beep_Frequency[7]={3816,3400,3029,2864,2550,2272,2023};

void PWM_Init(void)
{

   #if PWM_Channel==PWM_Channel1
     /*TIM2 Frequency = TIM2 counter clock/(ARR + 1) */
     TIM2_TimeBaseInit(TIM2_PRESCALER_16, 499);
     /*TIM2 Frequency=16M/16/(499+1)=2K*/
     /* PWM1 Mode configuration: Channel1
     TIM2 Channel1 duty cycle = [TIM2_CCR1/(TIM2_ARR + 1)] * 100 = 50%*/
     TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,250, TIM2_OCPOLARITY_HIGH);
     TIM2_OC1PreloadConfig(ENABLE);

   #elif PWM_Channel==PWM_Channel2
     TIM2_TimeBaseInit(TIM2_PRESCALER_16, 999);
     TIM2_OC2Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE,500, TIM2_OCPOLARITY_HIGH);
     TIM2_OC2PreloadConfig(ENABLE);

   #elif PWM_Channel==PWM_Channel3
     TIM2_TimeBaseInit(TIM2_PRESCALER_16, 499);
     TIM2_OC3Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,250, TIM2_OCPOLARITY_HIGH);
     TIM2_OC3PreloadConfig(ENABLE);
   #endif

   TIM2_Cmd(ENABLE);

}

void SetTIM2_PWM_Frequency(uint16_t TIM2_Period)
{
       /* Set the Autoreload value */

     TIM2->ARRH = (uint8_t)(TIM2_Period >> 8);
     TIM2->ARRL = (uint8_t)(TIM2_Period);
}

void SetTIM2_PWM_DutyCycle( uint16_t TIM2_Pulse)
{


   #if PWM_Channel==PWM_Channel1
     /* Set the Pulse value */
     TIM2->CCR1H = (uint8_t)(TIM2_Pulse >> 8);
     TIM2->CCR1L = (uint8_t)(TIM2_Pulse);

   #elif PWM_Channel==PWM_Channel2
     TIM2->CCR2H = (uint8_t)(TIM2_Pulse >> 8);
     TIM2->CCR2L = (uint8_t)(TIM2_Pulse);

   #elif PWM_Channel==PWM_Channel3
     TIM2->CCR3H = (uint8_t)(TIM2_Pulse >> 8);
     TIM2->CCR3L = (uint8_t)(TIM2_Pulse);

   #endif
}

void TestPWM_LED(void)
{
   u16 Duty_Val;
   for(Duty_Val=0;Duty_Val<499;Duty_Val++)
   {
     SetTIM2_PWM_DutyCycle(Duty_Val);
     Delay(0xfff);
   }
}

void TestPWM_Beep(void)
{
   u8 i;
   for(i=0;i<7;i++)
   {
     SetTIM2_PWM_Frequency(Beep_Frequency);
     Delay(0xffff);
     Delay(0xffff);
     Delay(0xffff);
     Delay(0xffff);
     Delay(0xffff);
     Delay(0xffff);
     Delay(0xffff);

   }
}
static void Delay(u16 nCount)
{
   /* Decrement nCount value */
   while (nCount != 0)
   {
     nCount--;
   }
}


        10-PWM.rar

标签:STM8S PWM

只有小组成员才能发言,加入小组>>

86个成员聚集在这个小组

加入小组

创建小组步骤

4周PADS强化班 HOT
林超文手把手教你学!
张飞暑期特训班
教你1000种电路设计思路
年度IP:PFC电源
张飞硬件电路之PFC全集
30天AD项目众筹
参与免费送VIP+原创视频
最全模电系列教程 NEW
运放、ADC、电磁兼容
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

PIC单片机论坛

DSP论坛

瑞萨单片机论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

电子展览展会专区

芯片求购|供应发布区