松翰单片机_SN8F570310——PWM
SN8F570310——PWM
代码示例:
#include "Equ.h" /* 普通 PWM 单脉冲 PWM 死区 PWM (就是取反的PWM) 寄存器:PW1M PW1CH (输出引脚) PW1Y (16 位 PWM1 周期控制位) PW1D (16 位 PWM1 占空比控制位) PW1B (16 位 PWM1 死区控制位) PW1A (8 位 PWM1 死区控制位) IEN0 INE4 PW1C 加载 PW1Y 寄存器的值决定 PWM 的周期和分辨率 (装载值) PW1C 从 0000H 开始计数,PWM 输出高电平 (计数器) PW1C=PW1D 时, PWM 输出低电平 (比较值) P2.4 PWM11 */ void pwm_init(void) { PW1YH = 0xA0; //周期 PW1YL = 0x00; PW1DH = 0x50; //占空比 PW1DL = 0x00; IEN4 |= 0x80; //开启PWM中断 PW1CH |= 0x02; //PWM 输出引脚; PW1M = 0x80 | 0x40; //使能时钟 // PW1M |= 0x01 //单脉冲 // PW1M |= 0x08 //死 区 P2M |= 0x10; //输出模式 P2 |= 0x10; //起始高电平 } void PW1Interrupt(void) interrupt ISRPwm1 { int p; for(p=0;p<20000;p++){} for(p=0;p<20000;p++){} S0BUF = 0x99; //for text if((IEN4 & 0x08) == 0x08){ IEN4 &=~0x08; for(p=0;p<20000;p++){} for(p=0;p<20000;p++){} S0BUF = 0x66; //for text } }
测试:
普通PWM
死区PWM(就是取反的pwm)
单脉冲PWM
笔记:
Stay hungry, stay foolish
待续。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!