打印
[STM8]

使用stm8产生spwm波

[复制链接]
3517|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
897024458|  楼主 | 2015-5-22 15:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天在做逆变电源,需要用到单片机发spwm波,说实话,刚接触stm8,对于其定时器了解的不是太多。而且关于怎样产生spwm波,经验也不是太足,希望大神们能指导一下,谢谢!!
沙发
vinson_yu| | 2015-5-27 11:35 | 只看该作者
你好,方便说清楚一下什么SPWM波吗? 是不是只是指PWM波。

使用特权

评论回复
板凳
amanda_s| | 2015-5-27 13:48 | 只看该作者
STM8的软件库里有TIMER的用法示例,包括怎么产生PWM。没有直接产生SPWM波的。
有一个办法就是,你自己另外再做一个所有占空比的table表,然后根据表格的内容修改PWM输出的占空比,来输出SPWM。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
897024458 + 1 很给力!
地板
aaa1125456| | 2015-6-2 10:45 | 只看该作者
我用的是stm8l系列你自己找i/O口 设置为输出就可以
GPIO_Init(........);

void timerpwm_init(unsigned int tim2_setvalue, unsigned int tim2_dutyfactor)
{
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);//tim2提供时钟
    TIM2_DeInit();//恢复默认设置
    /* 定时器配置初始化 */
    TIM2_TimeBaseInit(TIM2_Prescaler_128, TIM2_CounterMode_Up,tim2_setvalue );//16分频  向上计数  计数周期(自己设置)
    /* 配置为PWM输出模式 */
    TIM2_OC2Init(TIM2_OCMode_PWM1, TIM2_OutputState_Enable, tim2_dutyfactor, TIM2_OCPolarity_High, TIM2_OCIdleState_Set);
    /* 使能定时器输出 */// pwm1  使能                                            占空比(自己设置)   
    TIM2_CtrlPWMOutputs(ENABLE);//使能Tim2pwm 输出
    TIM2_ITConfig(TIM2_IT_Update,ENABLE);//可以产生中断  或者不产生 (DISABLE)
    TIM2_Cmd(ENABLE);//使能tim2
}

使用特权

评论回复
5
aaa1125456| | 2015-6-2 10:48 | 只看该作者
忘了 系统时钟也可以自己选   默认是hsi 8分频

使用特权

评论回复
6
zh113214| | 2015-6-4 22:52 | 只看该作者
这个系统时钟是怎么配置的呀。。

使用特权

评论回复
7
aaa1125456| | 2015-6-5 10:05 | 只看该作者
CLK_HSEConfig(CLK_HSE_ON);
    while(i--);
    /* Wait for HIE mode oscillator ready */
    while(!CLK_GetFlagStatus(CLK_FLAG_HSERDY));
    /* Configures the system clock (SYSCLK) - HSE mode */
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);
    /* Configures the System clock (SYSCLK) dividers - CLK_SYSCLKDiv_1 */
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
    /* Enables or disables the clock switch execution */
    /* If enabled, the clock switch to the source defined in thd CLK_SWR register. */
    CLK_SYSCLKSourceSwitchCmd(ENABLE);

我用的stm8l052r8

使用特权

评论回复
8
爱薇| | 2015-6-6 18:28 | 只看该作者
学习了

使用特权

评论回复
9
皈依| | 2015-6-8 10:44 | 只看该作者
TIM1_OC1Init       用这个函数进行PWM波形输出

使用特权

评论回复
10
mlj1775| | 2015-7-31 13:41 | 只看该作者
aaa1125456 发表于 2015-6-2 10:45
我用的是stm8l系列你自己找i/O口 设置为输出就可以
GPIO_Init(........);

你好,我想请问下,我这个 TIM1->CCR1H = (uint8_t)(TIM1_Pulse >> 8);
    TIM1->CCR1L = (uint8_t)(TIM1_Pulse);而TIM1_Pulse为一固定值66,那么这个占空比是怎么搞的啊,我计算不出来了,帮下忙,或者我程序发你也可以

使用特权

评论回复
11
897024458|  楼主 | 2016-3-1 16:23 | 只看该作者
vinson_yu 发表于 2015-5-27 11:35
你好,方便说清楚一下什么SPWM波吗? 是不是只是指PWM波。

嗯,就是用pwm拟出spwm波,现在已经解决了,谢谢!

使用特权

评论回复
12
897024458|  楼主 | 2016-3-1 16:24 | 只看该作者
amanda_s 发表于 2015-5-27 13:48
STM8的软件库里有TIMER的用法示例,包括怎么产生PWM。没有直接产生SPWM波的。
有一个办法就是,你自己另外 ...

额,后来自己做了一个表,就是这么做的,用示波器检测成功了,谢谢!

使用特权

评论回复
13
897024458|  楼主 | 2016-3-1 16:25 | 只看该作者
aaa1125456 发表于 2015-6-2 10:45
我用的是stm8l系列你自己找i/O口 设置为输出就可以
GPIO_Init(........);

嗯,谢谢了,感激不尽!!

使用特权

评论回复
14
897024458|  楼主 | 2016-3-1 16:26 | 只看该作者
皈依 发表于 2015-6-8 10:44
TIM1_OC1Init       用这个函数进行PWM波形输出

谢谢啦,谢谢啦!:lol

使用特权

评论回复
15
lanmanck| | 2016-11-11 16:39 | 只看该作者
897024458 发表于 2016-3-1 16:24
额,后来自己做了一个表,就是这么做的,用示波器检测成功了,谢谢!

不把代码贴上来吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

1

粉丝