你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8怎么输出比较精准频率的方波,比如38KHz,33KHz

[复制链接]
jiangfuli 提问时间:2018-4-24 14:42 /
本人使用PWM输出时,出现比较大的误差,-/+几百Hz。以下是我的初始化代码,望各位大神多多指教。


#define SYSCLOCK                16000000UL
#define CARRIER_WAVE_FREQUENCY  38000UL

/***************************************************************************
* @Function     : IR_Init()
* @Description  : init IR gpio and pwm
* @parameter    : void
* @return       : void
***************************************************************************/
void IR_Init(void)
{
    TIM1_DeInit();
    /*
        TIM1_Period = SYSCLOCK/CARRIER_WAVE_FREQUENCY-1
        TIM1_Prescaler = 0
        TIM1_CounterMode = TIM1_COUNTERMODE_UP
        TIM1_RepetitionCounter = 0
        */
    TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, SYSCLOCK/CARRIER_WAVE_FREQUENCY-1, 0);

    TIM1_OC1Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE,
                 TIM1_OUTPUTNSTATE_DISABLE, SYSCLOCK/CARRIER_WAVE_FREQUENCY/2-1,
                 TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH,
                 TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET);

    TIM1_Cmd(ENABLE);

    //TIM1_OC2PreloadConfig(ENABLE);

    TIM1_CtrlPWMOutputs(ENABLE);

}



收藏 评论1 发布时间:2018-4-24 14:42

举报

1个回答
xmshao 回答时间:2018-5-4 16:38:49
误差很大的话,先检查下时钟是否正确;

如果是使用内部HSI,不妨换外部晶振测试下;

重装载及预分频的值别配置错了。

这个应用,ST官方都有参考例程。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版