STM8S003 STM8S103 PWM实现

发布者:美好梦想最新更新时间:2021-10-14 来源: eefocus关键字:STM8S003  STM8S103  PWM 手机看文章 扫描二维码
随时随地手机看文章

通过仔细看stm8参考手册里有关pwm这一节,我们可以根据手册上的讲解,很容易配置出来一个pwm通道。


具体讲解下,首先看参考手册17.5.7 pwm模式这一节,这一节是针对TIM1定时器来实现的pwm:

pwm

通过看这些内容,我们知道如下信息:

1:设置TIM1_ARR寄存器设定频率,TIM1_CCR1确定占空比;

至于为何通过TIM1_ARR来设定寄存器频率,可以参考如下图:

pwm_1

看完上图就知道这个计数器的频率公式为:

F = 时钟频率/(预装载计数+1)

2:TIM1_CCMR1寄存器的OC1M位写入110或者111来确定PWM模式1或者2,而且,必须设置TIM1_CCMR1寄存器的OC1PE位使能预装载寄存器,也可以设置TIM1_CR1寄存器的ARPE位使能自动重装预装载寄存器;

3:必须通过设置TIM1_EGR寄存器的UG位来初始化寄存器。

知道如上信息后,我们针对TIM1的通道3设置为pwm,占空比位50%,代码如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include
 
#ifndef BIT
    #define BIT(n)    (1<<(n))
#endif
 
void pwm320k(void)
{
    TIM1_CR1 &= ~BIT(0);   //关闭TIM1
    //
    TIM1_PSCRH = 0;
    TIM1_PSCRL = 0;        //不分频16MHz
    //
    TIM1_ARRH = 0;
    TIM1_ARRL = 49;        //16MHz/(49+1) = 320KHz
    //
    TIM1_CR1 |= BIT(7);    //使能ARP
    TIM1_EGR |= BIT(0);    //更新TIM1,使PSC有效
    //
    TIM1_CCR3H = 0;
    TIM1_CCR3L = 25;       //占空比50%
    //
    TIM1_CCMR3 = 104;      //配置TIM1_CH3为PWM1模式输出
    //
    TIM1_CCER2 |= BIT(0);  //使能TIM1_CH3通道
    //
    TIM1_CR1 |= BIT(0);    //使能TIM1
 
    TIM1_BKR |= BIT(7);    //禁止刹车
}
 
//***********端口配置******************/
void IO_Config(void) {     
    //接收端led定义
    PC_DDR |= 0X08;     //设置PA3端口为输出模式
    PC_CR1 |= 0X08;     //设置PA3端口为推挽输出模式
}
/***********************************/
 
void main() {
    IO_Config();
    while (1) {
        pwm320k();
    }
}


关键字:STM8S003  STM8S103  PWM 引用地址:STM8S003 STM8S103 PWM实现

上一篇:STM8S103 IO口控制
下一篇:STM8使用TIM1测量PWM波

推荐阅读最新更新时间:2024-11-24 13:15

新型PWM产生器SA866及其在通用变频器上的应用
    摘要: 详细介绍了SA866的性能和设计使用方法,以及以它为核心研制的通用变频器。     关键词: 变频器  驱动电路 1 引言 变频器正得到越来越广泛的应用。在变频器技术中最重要的是SPWM脉冲的产生,通常采用的方法有模拟法和数字法,数字法的实现一种是利用微处理器计算查表得到,常需复杂的编程,另一种是利用专用集成电路(ASIC)来产生PWM脉冲,不需或只需少许编程,使用起来极为方便。本文介绍的SA866就是一块90年代末才推出的多功能ASIC。它可以独立运行,功能较强,以它为核心的变频器具有极高的性价比。本文介绍采用SA866研制的一台适用于风机、水泵负载的通用变频器,并可推广应用于对成本敏
[应用]
STM8S103之tim4普通定时器
一、简介 本文以STM8S103F3P6编程为例,介绍STM8S103F3P6定时器4计时驱动PB5脚 二、实验平台 电脑平台:Windows7 64位旗舰 编译软件:IAR 硬件平台:STM8S103F3P6 三、版权声明 四、实验前提 1、在进行本文步骤前,请先安装IAR EWSTM8-EV-1311版本;准备好STM8S103F3P6硬件平台。 五、基础知识 暂无 六、源码地址 暂无 七、关联文章 链接:暂无 八、实验内容 1.系统时钟初始化为内部16M CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //时钟
[单片机]
STM8学习笔记——PWM模块
首先将管脚配置为推挽输出。下面以向上计数模式为例来讲述PWM产生的原理:TIMx开始向上计数,TIMx_CNT为计数值,计数一次加1,TIMx_ARR确定了计数的上限,达到上限后计数器从0开始重新计数,所以一次PWM频率就由TIMx_ARR来确定了,即计数器时钟*(TIMx_ARR-1),频率确定了,接下来就是占空比。占空比是由TIMx_CCRx来确定的,PWM模式1下当TIMx_CNT TIMx_CCRx,输出OCiREF有效电平,TIMx_CNT =TIMx_CCRx时,输出OCiREF无效电平,至于有效电平是0还是1,要设置TIMx_CCERx,这样产生了一个PWM波形,可以说配置非常灵活,当TIMx_CCRx为0时,占
[单片机]
STM32普通定时器配置PWM的问题
oid TIM3_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; /* PWM信号电平跳变值 */ // u16 CCR1= 36000; // u16 CCR2= 36000; /*PCLK1经过2倍频后作为TIM3的时钟源等于72MHz*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /* Time base configuration */
[单片机]
单片机定时/计数器设计输出PWM
一、定时/计数器PWM设计要点 根据PWM是利用微处理器的数字输出来对模拟电路进行控制的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点: 1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率与控制的对象有关。如输出PWM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。 2.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率,而比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为: 3.然后根据需要PWM的频率范围确定
[单片机]
PIC 脉冲调控PWM模块
PWM的输出引脚通过PWMxCON寄存器的第7位 PWM 模块使能位(PWMxEN)配置为PWM输出 其中输出脚分别为 RC5-----PWM1 RC3-----PWM2 RA2-----PWM3 RC1-----PWM4 个人总结关于PIC的PWM模块配置的一般步骤,感觉数据手册推荐的配置方法略微麻烦。 ①配置系统时钟 ②配置PWM引脚为输出 ③配置TIM2的预分频数 ④配置计数器PR2和TMR2 ⑤配置输出极性并且PWM引脚输出使能 ⑥设置占空比 ⑦使能PWM波输出 void main() { OSCCON = 0x78;//16M __delay_ms(20);
[单片机]
PIC 脉冲调控<font color='red'>PWM</font>模块
让没有PWM功能的单片机实现PWM功能
AT89S51本身没有PWM接口,程序采用软件模拟PWM,P1口控制LED亮度,模拟PWM输出控制灯的10个亮度级。 #include reg51.h #define uInt unsigned int #define uchar unsigned char uchar PWM_T = 0; //占空比控制变量 //////////////////主程序入口////////////////////// void main(void) { bit flag = 1; //控制灯渐亮渐熄方式 uInt n; TMOD=0x02; //定时器0,工作模式2,8位定时模式 TH0=241;
[单片机]
ISL78215设计的PWM电流模式电源控制技术
本文介绍了ISL78215主要特性,功能方框图和典型应用电路。60uA,最大为100uA,可调开关频率达2MHz,1nF负载时的上升和下降时间为20ns,主要用在汽车电源, 通信 和数据通信电源,无线基站电源,服务器电源,工业电源系统,PC电源,升压稳压器和绝缘降压和反激稳压器。 ISL78215应用: • Automotive Power • Telecom and Datacom Power • Wireless Base Station Power • File Server Power • Industrial Power Systems • PC Power Supplies • Isolated Buck and F
[电源管理]
ISL78215设计的<font color='red'>PWM</font>电流模式电源控制技术

推荐帖子

提问+ 读《MCU工程师炼成记》问题三
书中介绍了FRAM开发板,板载资源非常丰富,活动中发放的430LaunchPad比较多,是否考虑可以发放一些FRAM开发板?另外书中P68,表5-1中,跳线序号4中括号内的“位于4上”是否有误?望勘正!!昨天书到手,还没来得及细读,接下来慢慢欣赏!!提问+读《MCU工程师炼成记》问题三
dlyt03 微控制器 MCU
2440 I2S AD转换问题
请问能够通过I2S音频解码芯片进行ADC转换,再通过I2S接口回传至2440处理器吗?如何操作?音频芯片AK4554自带I2S接口,以及两路ADC转换,默认ADC一直工作,是否ADC的数据直接送到了I2S的SDO口?将SDO口接到2440的SDI口,通过寄存器能读出ADC转换的数据吗?在2440中配置好I2S接口,音频芯片MCLK,SCLK都有,然后读IISFIFO寄存器?什么时候读?实际测试时读出来的值一直是0x6969,不知是什么原因?2440I2SAD转换问题学习,期待高手
katrina 嵌入式系统
最简传感器电路
最简传感器电路需要插到PC的串口使用,利用计算机的强大功能进行各种应用,其接口电路各有所长,偶以分立件组成的RS232电路最简其电路如下:最简传感器电路这也行,简单实用.SHT2x啥器件?http://www.sensirion.com.cn/看看这个 http://www.sensirion.com.cn/看看这个回复板凳zhjzh72_2004的帖子不是用IIC协议的么?咋用UART了?
bjwl_6338 DIY/开源硬件专区
BLUENRG-获取电池电量
使用BlueNRG,添加电池电量服务,并创建了一个CHAR_PROP_READ的character。aci_gatt_add_char(batServHandle,UUID_TYPE_128,&bat_char1_uuid,20,CHAR_PROP_READ|CHAR_PROP_NOTIFY,ATTR_PERMISSION_NONE,0,16,0,&batChar1Handle);但是app读取电量值时,调用不到aci_gatt_read_permit_req_event。请问
yunyixiao 意法半导体-低功耗射频
懂手机蓝牙控制51单片机的高手进
各位高手,我是菜鸟,我想利用手机蓝牙控制51单片机的P1端口输出高低电平,现在需要有位高手指导我一下,我这里有蓝牙主从模块,也有开发板,但是不知道程序要怎样修改,我这里有段程序,大家帮忙看下是什么意思。#includeSTC11f.H#includeintrins.H#includeType.h#includeBT.h#includeUart.hsbitBTREST=P1^5;sbitBTKEY=P1^2;externucharuartbuf
Jod_King 单片机
wince5.0 S3c2440官方bsp,带camera驱动
wince5.0S3c2440官方bsp,带camera驱动:http://www.itxxh.cn/book/2440/zaxsw1565.shtmlWINCE5.0系统下,OV9650CAMERA驱动程序:http://www.itxxh.cn/book/2440/zaxsw1568.shtmlwince5.0S3c2440官方bsp,带camera驱动?啥意思广告呗友情Up!
古木寒 WindowsCE
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved