2025蓝桥杯(单片机)备赛--扩展外设之PWM的原理与应用(十三)

server/2024/11/30 18:33:35/

1 PWM原理

        PWM :该方法未使用常规的PWM相关的寄存器配置;而是使用了定时器2;

与这个类似。

周期: 通过定时器2设置每次进中断的间隔,来设置最小周期(步进),如设置100us,这时PWM 的最小周期为100us,最大频率为1/100us;可通过设置一个变量进行累加,当该变量的 值达到一定的值的时候,进行PWM调节,以此来达到进一步周期的设置; 当变量达到预期值的时候,可以通过置0的方式,来重新计数,但经研究发现, 可以通过取余来达到此目的,例如cnt_pwm%=10,则cnt_pwm的最大值为10 cnt_pwm%=101,则cnt_pwm的最大值为100,达到了目的; 如果设置为cnt_pwm=cnt_pwm%10+1;并假设定时器2进入中断间隔为100us,则PWM 的周期为100us*10=1ms;

占空比:占空比即是高电平的时间/周期,此处可以用if语句进行值的比较; 当计数器的值小于预期的高电平的时间的时候,设置为1, 当计数器的值大于预期高电平的时间时,设置为0; 如设置pwm_duty=8,则占空比依据上面设置的1ms,可得占空比为80%; 为了更好更简洁的计算,可设置pwm_duty=80再/10,这样便于占空比的调整 可以通过按键设置占空比, 例如 pwm_duty=(pwm_duty+10)%110; 此时占空比步进为10,最大值为109, 但因为刚才pwm_duty/10的缘故,最大值为10,这样设置可以进行0.1ms-10ms,0.1ms步进的高电平时间

定时器设置:设置为 12MHZ,定时器2,100us,1T(ISP生成) 记得加上中断开启,ISP生成的函数不带中断 (IE2|=0X04;EA=1;

2 PWM实现代码

   最小周期设置:利用定时器 2进行设置:

    12MHZ,1T,定时器2,

//第一位是1,不是0,低四位,8-4-2-1

void Timer2_Init(void)        //100微秒@12.000MHz
{AUXR |= 0x04;    //定时器时钟1T模式T2L = 0x50;    //设置定时初始值T2H = 0xFB;    //设置定时初始值AUXR |= 0x10;    //定时器2开始计时//加上中断IE2|=0X04;  //8421 8421 EA=1;
}

PWM产生:设置一个CCR的值(占空比),在设置一个CNT用来计数

u8 pwm_ccr=80;
void PWM_Process(void)
{pwm_cnt=(pwm_cnt+1)%10;if(pwm_cnt<(pwm_ccr/10)){Device_Ctrl(0x80,0x00);}else{Device_Ctrl(0x80,0xff);}
}


http://www.ppmy.cn/server/146217.html

相关文章

【计算视觉算法与应用】金字塔,下采样Gaussian Pyramid. 上采用 Laplacian Pyramid (code: py)

金字塔&#xff08;Pyramid&#xff09;在图像处理中主要用于多尺度分析和图像压缩。常见的图像金字塔有两种&#xff1a; 高斯金字塔&#xff08;Gaussian Pyramid&#xff09;&#xff1a;用于下采样图像&#xff0c;生成分辨率逐渐降低的图像序列。拉普拉斯金字塔&#xff…

ESP32/ESP8266通过ESP-MESH无线组网协议通信

ESP32/ESP8266通过ESP-MESH无线组网协议通信 简介painlessMesh LibraryESP-MESH广播通信示例ESP-MESH通信验证总结 简介 Wi-Fi Mesh 是一种能够大幅提高 Wi-Fi 信号覆盖范围的无线网络系统。乐鑫基于 Wi-Fi 协议推出了 Wi-Fi Mesh 组网方案 ESP-Mesh-Lite&#xff0c;支持分布…

积鼎科技携手西北工业大学动力与能源学院共建复杂多相流仿真联合实验室

11月26日&#xff0c;复杂多相流仿真联合实验室揭牌仪式及技术研讨活动在西北工业大学动力与能源学院成功举办。复杂多相流仿真联合实验室是由西北工业大学动力与能源学院牵头&#xff0c;携手上海积鼎信息科技有限公司与三航铸剑&#xff08;西安&#xff09;科技发展有限公司…

速盾:介绍一下高防cdn的缓存响应事什么功能?

高防CDN&#xff08;Content Delivery Network&#xff09;是一种基于分布式缓存技术的网络加速服务&#xff0c;能够提供强大的缓存响应功能。它的缓存响应功能主要包括缓存加速和智能缓存两个方面。 首先&#xff0c;高防CDN的缓存加速功能是指通过在全球范围内部署大量的缓…

图像处理里的傅里叶变换:原理与代码实现

简介&#xff1a;本文围绕傅里叶变换在图像处理中的应用展开。先是以通俗易懂的方式详细阐释了傅里叶变换的核心理论&#xff0c;涵盖为何选用正弦和余弦、空间域到频率域的转换以及幅度图像和相位图像的含义等内容&#xff0c;帮助读者理解其原理。接着通过具体代码示例&#…

mybatis02——Mapper代理开发

以上配置完后在mybatis-config.xml文件里改resources&#xff08;见后面&#xff1a;可以直接将整个mapper包导进来&#xff09; <mappers><mapper resource"com/test/mapper/UserMapper.xml"/></mappers> 在接口&#xff08;与xxxMapper.xml文件…

Linux xattr 命令详解

简介 Linux 中的 xattr 命令用于管理文件的扩展属性。扩展属性存储标准属性中未包含的附加元数据&#xff08;如权限、所有者和时间戳&#xff09;。它们通常由特定的应用程序或文件系统&#xff08;例如&#xff0c;acl、SELinux 标签&#xff09;使用。 关键概念 扩展属性&…

【docker】docker的起源与容器的由来、docker容器的隔离机制

Docker 的起源与容器的由来 1. 虚拟机的局限&#xff1a;容器的需求萌芽 在 Docker 出现之前&#xff0c;开发和部署软件主要依赖虚拟机&#xff08;VMs&#xff09;&#xff1a; 虚拟机通过模拟硬件运行操作系统&#xff0c;每个应用程序可以运行在自己的独立环境中。虽然虚…