STC15系列单片机-PWM模块
来源:互联网 发布:网络机顶盒 编辑:程序博客网 时间:2024/05/20 04:50
STC15W内部集成了一个15位的PWM模块, 可以6路独立输出. 此外PWM模块每一路都有两个用于控制波形翻转的计数器T1和T2, 可以灵活地控制每路PWM的高低电平宽度, 从而实现对PWM占空比的设计.
重点: PWM模块相关的寄存器
注:1>x: 代表可以取数字2-7
2>这些寄存器中只指出与PWM相关的控制位
端口配置寄存器(P_SW2)
- 复位后 0000 ?000
- EAXSFR: 访问扩展SFR使能控制位
- 如果要访问PWM在扩展RAM区的特殊功能寄存器,必须将其置一.
PWM配置寄存器(PWMCFG)
- 复位后 ?000 0000
- CBTADC :PWM计数器归零触发ADC转换控制位, 当它为0, 不会触发ADC转换; 为1就触发
注: 前提是PWM和ADC都要使能, ENPWM = 1 && ADCON = 1 - CxINI(x: 2-7)
设置PWMx, 当它为0,表示PWMx输出端口初始电压为低电平, 为1就是高电平
PWM控制寄存器(PWMCR)
- 复位后 0000 0000
- ENPWM :使能PWM, 为0, 关闭PWM模块; 为1开通PWM模块
- ECBI: PWM计数器归零中断使能位, 为0,关闭归零中断(但是CBIF依然会被硬件置位); 为1, 使能PWM计数器归零中断
- ENCxO: PWMx输出使能位, 为0, 端口为通常IO口, 为1, 就作为PWM波形输出口
PWM中断标志寄存器(PWMIF)
- CBIF: PWM计数器归零中断标志位. 当PWM计数归零, 硬件将它置一, 同时如果中断允许,程序会跳转到相应的中断入口执行中断程序.
- CxIF: 第x通道PWM中断标志位, 可设置在翻转点1和翻转点2触发CxIF, 当PWM发生翻转是, 硬件自动将该位置置一. 当EPWMxI为1时, 程序会跳转至相应的中断入口执行中断服务程序
注: 这个位需要软件清零.
PWM外部异常控制寄存器(PWMFDCR)
- ENFD: PWM外部异常检测功能控制位. 为0就关闭异常功能检测, 为1就开启
- FLTFLIO: 发生PWM外部异常时,对PWM输出口的控制位. 为0, 发生PWM外部异常时, PWM输出口不做任何改变, 为1时, PWM输出口立即进入高阻模式
注: 只有ENCxO为1所对应的端口才会被强制悬空. 当PWM外部异常状态消失后, 相应的PWM输出口就会自动回复以前的I/O口设置 - EFDI: PWM异常检测中断使能. 当它为0, 关闭异常检测中断(FDIF仍然会被硬件置位); 当该位为1时, 使能PWM异常检测中断
- FDCMP: 设定PWM异常检测源为比较器的输出. 为0, PWM跟比较器没关系, 为1, P5.5/CMP+的电平比P5.4/CMP-的电平高或者比P5.5/CMP+的电平比内部翻看电源电压1.28V高时, 触发PWM异常
- FDIO: 设定PWM异常检测源为P2.4的状态. 为0, P2.4和PWM无关, 为1, P2.4为高电平时触发PWM异常
- FDIF: 异常检测中断标志位. 当PWM异常, 即P5.5/CMP+电压比比较器负极P5.4/CMP-的电平高或者比比较器正极P5.5/CMP+的电平比内部参考电压1.28V高, 或者P2.4的电平为高时, 硬件自动将该位置置一. 当EFDI为1时, 程序会跳转到中断入口执行中断服务程序
注: 该位需要软件清零
PWM计数器(PWMCH&PWMCL)
- 复位后 ?000 0000
- 复位后 0000 0000
- PWM计数器是一个15位寄存器, 计数器1~32768之间的任意值都可以作为PWM的周期. PWM波形发生器内部的计数器从0开始计数, 每个PWM时钟递增1. 当内部计数器达到[PWMCH,PWMCL]设置的PWM周期时, PWM波形发生器内部的计数器将从0开始重新计数. 硬件会自动将PWM归零中断标志位CBIF置一, 如果ECBI为1, 则程序将跳转到相应中断执行中断服务程序.
- PWM时钟选择寄存器(PWMCKS)
- 复位后: ???0 0000
- SELT2: PWM时钟源选择. 为0, PWM时钟源为系统时钟经过分频器之后的时钟; 为1, PWM时钟源为T2的溢出脉冲
- PS[3:0] :系统时钟分频参数. SELT2位为0, PWM时钟频率 = 系统时钟频率/(PS[3:0]+1)
PWM翻转计数器(PWMxT1H&PWMxT1L&PWMxT2H&PWMT2L)
- 复位后 ?000 0000
- 复位后 0000 0000
- 复位后 ?000 0000
- 复位后 0000 0000
- PWMx控制寄存器(PWMxCR)
- 复位后 ???? 0000
- PWMx_PS: PWMx输出引脚选择位. 为0, PWMx的输出为PWMx/P?.?. 为1, PWMx输出引脚为PWMx_2/P?.?
注: 引脚可以参看IO脚总结 - EPWMxI: 中断使能控制位. 为0, 关闭PWMx中断, 为1,开启该中断. 当CxIF被硬件设置为1时, 程序将跳转到相应中断服务程序入口执行中断服务程序.
- ECxT2SI: PWMx的T2匹配发生波形翻转时的中断控制位. 为0, 关闭T2翻转时的中断, 为1, 开启. 当PWMx波形发生器内部计数值与T2计数器所设置的值匹配时, PWM波形发生翻转, 同时硬件将CxIF置位.
- ECxT1SI: PWMx的T1匹配发生波形翻转时的中断控制位. 为0, 关闭T1翻转时的中断, 为1, 开启. 当PWMx波形发生器内部计数直与T1计数器所设置的值匹配时,PWM波形发生翻转,同时硬件将CxIF置位.
- PWM中断优先级控制寄存器(IP2)
- PPWMFD: 异常检测中断优先级控制位, 为0, 低优先级, 为1, 高级优先级
- PPWM: PWM中断优先级控制位. 为0,低优先级, 为1, 高优先级
阅读全文
0 0
- STC15系列单片机-PWM模块
- STC15单片机6路专用PWM
- stc15系列单片机 timer组件
- STC15系列单片机命名规则
- STC15系列单片机IAP15F2K61S2 矩阵键盘实验
- STC15系列单片机-环境监控设备
- STC15系列单片机 超声波测距实验
- 对STC15系列单片机EEPROM使用感受
- STC15系列单片机-I/O口小结
- STC15系列单片机检测不到,下载不成功
- STC15系列单片机检测不到,下载不成…
- STC15单片机驱动WS2812
- MC9S12XS128单片机,PWM模块速览
- STM8S105系列单片机的PWM输出配置
- STM8L151系列单片机PWM配置时注意事项
- AURIX系列GTM模块中的PWM部分
- 飞思卡尔单片机PWM模块分析(1)
- 飞思卡尔单片机PWM模块分析(2)
- Android学习-Fragment(上)
- 【OpenCV学习笔记】1:配置开发环境
- linux 安装python-opencv
- Best Time to Buy and Sell Stock II
- 【面试题】Java三大特性封装继承多态总结
- STC15系列单片机-PWM模块
- 事务的ACID和四个隔离级别
- dockerhub 账号开通
- IDEA搭建的maven项目无SRC目录
- 欢迎使用CSDN-markdown编辑器
- 重拾Java--功底篇之String
- [设计]策略模式
- 【LeetCode】1. Two Sum
- 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程