Linux 硬件学习 s3c2440 arm920t蜂鸣器

news2024/9/21 3:52:06

1.查找手册时钟图,输入12m想要通过pll得到400m的信号

2.对比pll值,找到最近的为405,得到pll中mdiv为127,pdiv为2,sdiv为1

3.想要得到fclk400,hclk100,pclk50,对比分频比例,得到hdivn为2,pdivn为1

4.hclk要为fclk/4,要使得camdivn【9】为0,此时回到3,再回到2,会得到正确的分频

5.经过上部分操作,pclk为50m,pclk信号会通向有pwm脉冲调制

6.手册pwm框图

7.查看pwm驱动蜂鸣器图,需要高电平使得,蜂鸣器工作

8.将gpb0选择为tout0引脚,对应定时器0

9.500hz(一个周期2ms),占空比50%,则tcntb0设置为2000(通过一个信号减一次),则tcmpb0比较器(到达比较器的数值电平反转)设置为1000,其内部功能也要按需相应设置,例如一般为低电平到高电平,此次为确保停止时关闭,应开启输出变相,变为高电平到低电平,停止时则为低电平,蜂鸣器不会继续响

10.因为想要500hz的信号,而计数器为2000,则通过mux后的信号为2000*500 = 1Mhz,最开始的输入为12mhz,通过一个预分频器(八位),再通过一个四位分频器和选通门,降为1mhz,逆向推理,由四位到预分频,假如为1/4,则通过预分频器的信号为4,这样50要变为4,分频不为整数,我们最好要整数,排除,然后对比四位分频器和预分频器得到合理的数据,四分频器为1/2,预分频器为25,此时因为预分频器防止为0导致错误,会自动加1,所以设置为24即可。这样50mhz通过预分频(1/25)为2,再过四位分频(1/2)为1(四分频的1/2,通过选通门设置1/2通路),之后每通过一个信号计数减一次,一兆里面一兆个信号,2000个信号转换一次电平,一兆就可以有500次转换电瓶平,所以得到500赫兹的信号 便可有500hz的信号通过tout0引脚,再加上之前设置好的gpb0转tout0引脚,则可使蜂鸣器工作

11.实现代码

#include <s3c2440.h>

//pll
void clk_init(void)
{
	// 配置 F :H :P  = 1 : 4 : 8
	CLKDIVN = (2 << 1) | (1 << 0);
	// 配置Fclk为400M
	MPLLCON = (127 << 12) | (2 << 4) | (1 << 0); 
}

void pwm_init(void)
{
	//配置GPB0引脚功能为TOUT0
	GPBCON &= ~(0x3 << 0);
	GPBCON |= (0x2 << 0);

	TCFG0 &= ~(0xff << 0);
	TCFG0 |= (24 << 0);	   //预分频值 25
	TCFG1 &= ~(0xf << 0);  //分频 1/2

	TCNTB0 = 4000;
	TCMPB0 = 1000;

	TCON &= ~(1 << 4);  //关闭死区
	TCON |= (1 << 3);   //自动重载
	TCON |= (1 << 2);   //变换极性
	TCON |= (1 <<1);    //更新CMP和CNT
	TCON |= (1 << 0);   //启动定时器
	TCON &= ~(1 << 1);  //清除更新位
}

void pwm_stop(void)
{
	TCON &= ~(1 << 0);	
}

void main(void)
{
	clk_init();
	pwm_init();


}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unet改进24:添加DualConv||轻量级深度神经网络的双卷积核

本文内容:在不同位置添加DualConv 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 卷积神经网络(CNN)架构通常对内存和计算要求很高,这使得它们在硬件资源有限的嵌入式系统中不可行。 我们提出了双卷积核(DualConv)来构建轻量级深度神经网络。DualConv结…

亚马逊云科技 Gen BI 2024-09-04 上海站QuickSight

机缘 我又来了&#xff0c;感觉不上班比上班还要忙 天天像特种工一天&#xff0c;今天有度过的充实的一天&#xff0c;上午去图书馆&#xff0c;下午去了 亚马逊云科技 Gen BI 技术体验日 。 具体照片可以去 这里看 哈哈&#xff0c;这个就是我了 商业智能的趋势 根据艾瑞咨…

WildCard平台:什么是 ChatGPT 随心用?什么是 Claude 随心用?什么是随心用全能套餐?

最近胖虎收到很多私信都在询问&#xff0c;很多人搞不清楚什么是 ChatGPT 随心用&#xff1f;什么是 Claude 随心用&#xff1f;什么是随心用全能套餐&#xff1f;下面就对三种套餐做了全面的QA解答。 如果想直接使用随心用&#xff0c;或者订阅ChatGPT&#xff0c;或者支付 C…

示波器基础知识汇总(1)

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1、电子信号2、波属性①、幅度②、相移③、周期④、频率⑤、波形正弦波方波/矩形波三角波/锯齿波脉冲复合波 3、信…

YOLOv9模型训练或测试过程中,无法打印模型的GFLOPs

项目场景&#xff1a; 在YOLOv9模型的改进中&#xff0c;常常需要替换一些模块来提高模型的精度。但在评价模型大小规模的时候需要根据模型的参数量、计算量进行评定&#xff0c;一般在模型的训练文件train.py&#xff0c;或者是test.py还有models/yolo.py都会输出这些数据。 …

idea单元测试报错找不到主类

报错截图 主要是单测中没有配置类 在下面的command line 中选择jar manifest 因为条参数过长&#xff0c;这里设置只使用主类 详细解释见&#xff1a; https://www.jianshu.com/p/8322b3b17040

Web开发的艺术:C#开发中实现代码简洁性与规范性的终极指南

一、变量的要求 变量名 1.简短有意义: 合适: student_count&#xff0c;student_ids&#xff0c;student_enable_list, water_price 不合适: numberOfItemsInTheCart, totalPriceOfTheOrderInTheShoppingCart,temp, data,list 2.变量名之间不要太像: 合适: totalAmount, disc…

传统CV算法——边缘检测算法Canny算法实战

Canny 算法 边缘&#xff1a;我的理解是在图像处理的过程中&#xff0c;针对我们图像处理的过程中&#xff0c;梯度变化以较大的地方能够让我们能够快速辨识&#xff0c;针对一个人脸&#xff0c;脸上有一些平滑的地方&#xff08;没错我针对美颜的&#xff09;&#xff0c;与…

JavaScript 条件分支语句if...else

if 语句 只有当指定条件为 true 时&#xff0c;该语句才会执行代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name…

Introduction to Deep Learning with PyTorch

1、Introduction to PyTorch, a Deep Learning Library 1.1、Importing PyTorch and related packages import torch# supports: ## image data with torchvision ## audio data with torchaudio ## text data with torchtext 1.2、Tensors: the building blocks of network…

磁盘加密工具 | VeraCrypt v1.26.15 绿色版

VeraCrypt 是一个开源项目&#xff0c;旨在提供强大的加密解决方案&#xff0c;以创建和管理加密的磁盘分区和加密容器。它继承了著名的加密软件 TrueCrypt 的特性&#xff0c;并在此基础上进行了扩展和改进。 主要特性 1. 高级加密算法 VeraCrypt 支持多种加密算法&#xf…

假如你是HR,你怎么招「游戏策划」?

你是一名从业十余年&#xff0c; 拥有丰富面试经历、掌握多种话术的 资深游戏行业人事。 想知道策划岗位该怎么入行可点击蓝链 你不满足于在名不见经传的小企业 拿一份凑合过的薪资&#xff0c; 于是你成功跳槽来到国内顶级游戏大厂“猪厂”&#xff0c; 并且接手了你的…

Redis集群技术1——nosql简述

一、关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库&#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库 中的数据主流的 MySQL、Oracle、MS SQL Server 和 …

谷歌排名SEO优化#蜘蛛池软件(搜索大客户)

谷歌排名SEO优化#蜘蛛池软件&#xff08;搜索大客户&#xff09; 如何检测你的网站是否能被谷歌搜索引擎蜘蛛抓取 通过一个工具快速检测你的网站&#xff0c;是否能被谷歌搜索引擎&#xff0c;bing搜索引擎的蜘蛛爬取收录。网站是否能被蜘蛛抓取收录是谷歌SEO的基础&#xff0…

C_深入理解指针(五) —— sizeof和strlen的对比、数组和指针笔试题解析、指针运算笔试题解析

目录 一、sizeof和strlen的对比 1、sizeof 2、strlen 3、sizeof 和 strlen的对比 二、数组和指针笔试题解析 1、⼀维数组 重点学习代码&#xff1a;sizeof与一维整型数组类型 2、字符数组 代码1&#xff1a;sizeof与字符数组类型 代码2&#xff1a;strlen与字符数组类…

log4j 和 java.lang.OutOfMemoryError PermGen space

还是OneCoder在项目中沙箱的问题&#xff0c;用classloader隔离做的沙箱&#xff0c;反复运行用户的任务&#xff0c;出现永生区内存溢出&#xff1a; java.lang.OutOfMemoryError: PermGen space 这个问题在tomcat重复热部署的时候其实比较常见。其道理也和我们沙箱的道理基本…

【重学 MySQL】十二、SQL 语言的规则与规范

【重学 MySQL】十二、SQL 语言的规则与规范 基本规则注释语法规则命名规则基本命名规则具体命名规范其他注意事项 数据导入指令 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;的规则与规范是确保SQL语句能够正确执行、提高代码可读性和可维…

HarmonyOS开发实战( Beta5.0)Native Drawing自绘制能力替代Canvas提升性能

简介 Canvas 画布组件是用来显示自绘内容的组件&#xff0c;它具有保留历史绘制内容、增量绘制的特点。Canvas 有 CanvasRenderingContext2D/OffscreenCanvasRenderingContext2D 和 DrawingRenderingContext 两套API&#xff0c;应用使用两套API绘制的内容都可以在绑定的 Canv…

语音测试(一)ffmpeg视频转音频

视频转音频 下载ffmpeg工具进入bin目录cmd进入控制台输入命令 ffmpeg.exe -i ./视频.mp4 ./音频.wav命令说明 ffmpeg -i input.mp4 output.mkv FFmpeg 可能会尝试自动选择合适的编码器对视频和音频进行重新编码&#xff0c;以便适应 MKV 格式的要求ffmpeg -i input.mp4 -c c…

Java项目:140 springboot203医疗挂号管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 一共有管理员、挂号人员、划价人员、医生 四个角色 管理员登录进入本系统操作的功能包括对挂号人员&#xff0c;划价人员&#xff0c;患者&#xff0…