基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.17,PWM控制与状态切换)

1.今天做了什么

2.过程思路

看了两天文档才慢慢看懂,有点满了

现在接着前一天的思路,可以通过代码来控制pwm的占空比。我这里采用的是TP0定时器

初步控制pwm的占空比

void LED_PWM_OPEN(void) 
{
 //占空比 PWM1-Y-PB2
 	PWM1DH = 0X0F;
	PWM1DL = 0X00; 
	
//占空比 PWM01-W-PB1
	PWM0DTH = 0X01;
	PWM0DTL = 0X00; 
	
//占空比 PWM0-BLUE-PB0 
	//PWM0DH = 0XFF; 
	//PWM0DL = 0X00; 
	
//周期 
	PWM0PH = 0X00; 
	PWM0PL = 0X00; 
	
//PB0输出 
	PWMPSCON = 0x04;//--11 1111 :PB0-OUT	 
	
//pwm0c 
	PWM0C = 0xc2;//PWM0C_Buf;	//11-- 0011 :Fosc/2 
	
//PWM0EN 
	PWM0EN = 0x9d;//PWM0EN_Buf;	//1-01 1101 :TP0-EN;8BIT;PWM0X-EN;独立模式;PWM-EN  


	FTP0IF = 0;//TP0 溢出中断标志位,TP0 溢出时被置位,软件清除
FTP0IE = 1;//TP0 溢出中断使能位(1=使能,0=失能)
FTP0EN = 1;//启动 TP0 定时器
FGIE = 1;//开全局中断

}

然后在中断函数中调用

void interrupt myIsr(void)
{


	if (FTP0IF)
	{
		FTP0IF = 0;
	}
	//----User Code End----
}

思路简略得写在注释了,以后总结再详细一点。

设定PWM的值可以在3s内由最高降到最低

现在需要设定PWM的值可以在3s内由最高降到最低,那么通过设置这个定时器每1ms中断一次,占空比每1ms减少0.03%。达到每1s占空比减少30%就可以达到效果

这里PWM0PH和PWM0PL的值在定时器初始化均设至为0,所以

        PWM0X的占空比等于=占空比设定的值*PWMX0工作时钟源周期
                                           =占空比设定的值*1/PWMX0工作时钟源频率

这里通过寄存器手册可以得知占空比可以设定的最大值为0XFFF,

这个寄存器可以设定的最大值为4095,定时器的频率设置为Fosc/2,也就是1950HZ/2=975HZ

也就是一秒钟中断957次,此时把重装载值设定为1170,与4095之间的差值为975X3。在定时器内对PWM0DL和PWM0DH的值进行调整,那么在3s后占空比就会达到最亮

通过按键控制PWM输出变化

原本的思路是在按键扫描函数中设置FTP0IF = 1,然后可以执行

这一段代码来对PWM的调节。但是结果并不像想象中那个样子,现象为灯的颜色不变,长按或者短按按键均无反应。

猜想1:是不是按键扫描函数的中断执行的太慢了,导致PWM的值不能及时地累加,导致现象不明显,目前未排除

猜想2:TP0的定时器中断一直打断TIMER定时器的中断,对应中断函数无法执行。不过发现其他按键依旧可以顺利执行,排除这个可能。

暂且不管上面,想到个方法采用了在按键扫描中对FTPOIE这个TP0定时器的中断溢出标志位进行改变,相当于控制定时器的开启和关闭。如果点按的话由于事件过短定时器的开启和关闭就一瞬间,对亮度没什么影响。

3.开发中遇到的卡点

现在的问题是灯会呼吸一次,并不是渐灭或者渐亮的状态,应该是逻辑还有问题。

4.想问的问题

这个芯片的Fcpu和Fosc多大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/162037.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】20、进程状态:不可中断进程、iowait、僵尸进程、dstat strace pstree

文章目录 一、进程状态1.1 iowait 分析1.2 僵尸进程1.3 小结 短时应用的运行时间比较短,很难在 top 或者 ps 这类展示系统概要和进程快照的工具中发现,你需要使用记录事件的工具来配合诊断,比如 execsnoop 或者 perf top。 讲到 CPU 使用率的…

App测试经典面试题及参考答案

最近整理了一些关于App测试的面试题。 本参照答案是本人在工作实践中总结,仅代表个人观点,如有错误,请谅解。 1、说一些你在测试过程中常用到的adb命名 2、APP测试与web测试的区别? 3、APP闪退有哪些原因造成的? …

解决Kibana初始化失败报错: Unable to connect to Elasticsearch

现象: 原因: docker run生成容器的时候,指定elastic server时指向了localhost 为什么不能是localhost, 因为这个localhost指向的是容器本身的网络,而elastic用的是物理网络,两个网络是隔离的,所以如果kiba…

统计量及抽样分布

1.常用统计量 (1)样本均值 反映总体X数学期望的信息,是最常用的统计量。 (2)样本方差 反映总体X方差的信息。 (3)样本变异系数 反映总体变异系数C的信息,用来刻画离散程度。 &am…

微服务实战系列之Nacos

导语 欢迎来到 “Nacos” 的世界! Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单…

C语言基本算法----冒泡排序

原理 冒泡排序就是对一个存放N个数据的数组进行N次扫描,每次把最小或者最大的那个元素放到数组的最后,达到排序的目的。 原理图解 冒泡排序过程分析 冒泡排序的执行过程 冒泡排序总结 在此感谢 冒泡排序法_哔哩哔哩_bilibili 这篇blog是对这位up此视…

ESP32网络开发实例-非接触式水位监测

非接触式水位监测 文章目录 非接触式水位监测1、HC-SR04介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将使用 HC-SR04 超声波传感器和 ESP32 创建一个水位监测网络服务器。 这将是一个非接触式水位测量系统。 首先,我们将介绍HC-SR04 与 ESP32 连接。 使用ESP32对超声…

mac无法向移动硬盘拷贝文件怎么解决?不能读取移动硬盘文件怎么解决

有时候我们在使用mac的时候,会遇到一些问题,比如无法向移动硬盘拷贝文件或者不能读取移动硬盘文件。这些问题会给我们的工作和生活带来不便,所以我们需要找到原因和解决办法。本文将为你介绍mac无法向移动硬盘拷贝文件怎么回事,以…

RobotFramework之如何使用数据驱动(十二)

学习目录 引言 数据驱动是什么? 非驱动方式测试案例 通过添加Template模板的方式,实现数据驱动 将参数放在变量文件中,实现数据驱动 引言 大家平时在写接口或者UI自动化用例的时候,是否遇到这种情况: 写了很多条…

在 C# 程序中注入恶意 DLL

为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的?其实简而言之就是线程的远程注入,这一篇就展开说一下。 实现原理 1. 基本思路 WinDbg 在附加进程的时候,会注入一个线程到 C# 进程 中&…

盘点60个Python各行各业管理系统源码Python爱好者不容错过

盘点60个Python各行各业管理系统源码Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 源码下载链接:https://pan.baidu.com/s/1VdAFp4P0mtWmsA158oC-aA?pwd8888 提取码:8888 项目名…

原来机械硬盘比内存慢10万倍

我们都知道机械硬盘的速度很慢,内存的速度很快,那么不同存储器之间的差距到底有多大呢? 我们先来看一幅图: CPU访问寄存器的时间是0.3纳秒,访问L1高速缓存的时间是1纳秒,访问L2高速缓存的时间是4纳秒… 秒…

Cmake学习

cmake大致 cmake_minimum_required(VERSION 3.0)project(test) #通过set自定义变量,通过${}取出 #set(SRC add.cpp main.cpp muti.cpp sub.cpp) #cmake搜索文件 宏定义PROJECT_SOURCE_DIR aux_source_directory(${PROJECT_SOURCE_DIR} SRC) #file(GLOB/GLOB_RECURSE…

Linux文件权限

R 代表可读 W 代表可写 X 代表可执行 文档类型有如下表示方法:   d - 目录,例如上表档名为『.gconf』的那一行; - - 文档,例如上表档名为『install.log』那一行; l - 链接档(link file); b …

带你快速掌握Linux最常用的命令(图文详解)- 最新版(面试笔试常考)

最常用的Linux指令(图文详解)- 最新版 ls:列出目录中的文件和子目录。(重点)cd:改变当前工作目录。绝对路径:相对路径 pwd:显示当前工作目录的路径。mkdir:创建一个新的目…

[Kettle] 字段处理

1.增加常量 常量是指在计算机程序运行过程中其值不能改变的量 常量可以是任何的数据类型,例如,圆周率"3.141159"、中国首都"北京"等都可以是常量 增加常量是指在数据中增加一个字段,并给字段设置一个固定的值 数据源…

java源码-工程讲解

1、 工程目录 源码工程目录讲解部分,讲解过程会让大家对后端源码工程有一个大致的了解,能让大家在此改造,就可以衍生出一些新的功能,需要对java技术深入了解,需要看后续java技术讲解部分 整个架构是一个spring-boot…

​软考-高级-系统架构设计师教程(清华第2版)【第16章 嵌入式系统架构设计理论与实践(P555~613)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第16章 嵌入式系统架构设计理论与实践(P555~613)-思维导图】 课本里章节里所有蓝色字体的思维导图

Redis 9 数据库

4 设置键的生存时间或过期时间 通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(TimeToLive,TTL),在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间…

Python的数据分析包Pandas?示例文章完成版来啦~

文章目录 前言一、Pandas简介二、Python Pandas的使用 总结 前言 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 Pandas 是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源…