标题:
stm8s的PWM输出38KHz源代码
[打印本页]
作者:
zg211211
时间:
2018-5-7 16:23
标题:
stm8s的PWM输出38KHz源代码
使用stm8s的TIM2 ,输出38KHz的PWM
测试TIME2_CH2的PWM,输出38KHz。
必须放在首次建立工程文件的路径下编译,否则无效。
测试TIME1_CH1的PWM,输出1KHz,可以调PWM。
TIME1_CH1输出需要更改option bytes:AFR0。
单片机源程序如下:
/******************** (C) COPYRIGHT 风驰电子嵌入式开发工作室 ********************/
#include "pwm.h"
#include "stm8s_tim2.h"
#include "stm8s_tim1.h"
static void Delay(u16 nCount);
void Tim1_PWM_Init(void)
{
//TIM1复位
TIM1_DeInit();
//16 MHz/16 分频= 1 兆赫、向上计数, 1 MHz /1000 =计数 1000
TIM1_TimeBaseInit( 15, TIM1_COUNTERMODE_UP, 999, 0 );
//初始化捕获/比较通道1(PWM模式1,启用输出比较),
TIM1_OC1Init( TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE,
//启用互补输出比较1,脉宽50%,输出比较极性高电平,
TIM1_OUTPUTNSTATE_ENABLE, 499, TIM1_OCPOLARITY_HIGH,
//互补输出比较极性高电平,输出比较空闲状态复位,互补输出比较空闲状态复//位)
TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_RESET, TIM1_OCNIDLESTATE_SET );
//启用定时器
TIM1_Cmd(ENABLE);
//允许主输出????? 移动 TIM1 定时器。选择 PWM 输出。
TIM1_CtrlPWMOutputs(ENABLE);
}
void SetTIM1_PWM_DutyCycle( uint16_t TIM1_Pulse)
{
/* Set the Pulse value */
TIM1->CCR1H = (uint8_t)(TIM1_Pulse >> 8);//ch1
TIM1->CCR1L = (uint8_t)(TIM1_Pulse);
}
void TestTIM1_PWM_LED(void)
{
u16 Duty_Val;
for(Duty_Val=0;Duty_Val<999;Duty_Val++)
{
SetTIM1_PWM_DutyCycle(Duty_Val);
Delay(0xfff);Delay(0xfff);
Delay(0xfff);Delay(0xfff);
}
}
void Tim2_PWM_Init(void)
{
TIM2_TimeBaseInit(TIM2_PRESCALER_1, 420);
TIM2_OC2Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,210, TIM2_OCPOLARITY_HIGH);
TIM2_OC2PreloadConfig(ENABLE);
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)
{
TIM2->CCR2H = (uint8_t)(TIM2_Pulse >> 8);
TIM2->CCR2L = (uint8_t)(TIM2_Pulse);
}
void TestTim2_PWM_LED(void)
{
u16 Duty_Val;
for(Duty_Val=0;Duty_Val<999;Duty_Val++)
{
SetTIM2_PWM_DutyCycle(Duty_Val);
Delay(0xfff);Delay(0xfff);
Delay(0xfff);Delay(0xfff);
}
}
void Delay(u16 nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
/******************* (C) COPYRIGHT 风驰电子嵌入式开发工作室 *****END OF FILE****/
复制代码
所有资料51hei提供下载:
TIM2-PWM.rar
(255.98 KB, 下载次数: 74)
2018-5-7 16:22 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
y9622
时间:
2019-1-27 10:17
“必须放在首次建立工程文件的路径下编译,否则无效。" 这是什么道理,如何解决呢?
作者:
yyhhgg
时间:
2019-3-28 23:23
楼主,占空比1%怎么修改
作者:
lzh7592
时间:
2019-3-29 17:32
没碰到这样的问题
作者:
lanjinglin
时间:
2020-2-2 20:50
谢谢分享,学习了
作者:
MCU2023
时间:
2023-12-11 11:30
非常好。遗憾的是IAR环境。想要个STVD环境的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1