writel(readl(&pwm_timer->tcfg0) | 0xff, &pwm_timer->tcfg0);
解析这句代码什么意思!
神说:选定预分频器0
为什么?
神说:因为实验中选的是timer1,在预分频器0下;
若选择timer4,该如何写这句代码?
首先看tcfg0中选择预分频器1,在看tcfg1里面的timer4,以及选择相应的MUX
总结:在初始化寄存器时,首先得看寄存器表,寄存器表中可能分为许多【位】,我们需要哪位,就给哪位写入值(这个值是对应相应的功能来写的)。
分频器1:
对应的代码:
① 选择预分频1:
writel(readl(&pwm_timer->tcfg0) | 0xff << 8, &pwm_timer->tcfg0);
在书上说明了预分频的取值范围是1~255(神告诉我,值越大,频率越大,蜂鸣器响的越快)。
所以在这里我们不必关心值是多少,我们只需要让这个值不是初始值,并且在TCFG0的[15:8]这个地方,左移8位,就可以到达这个地方;
② 选择MUX4,频率为1/16:
从图中,可以知道MUX4对应TCFG1[19:16],选择频率是1/16,对应二进制位0100,可以让0x4 << 16,得到。
但是为了让[15:0]都不起作用,给他们都赋值1(这里不太清楚,自己猜的,大概就是这样吧!),即1111,1111,1111,1111
可以通过0xf左移16位,并且取反,在与[0x4 << 16]取与&
代码为:
writel((readl(&pwm_timer->tcfg1) & ~(0xf<<16)) | (0x4<<16), &pwm_timer->tcfg1);
writel(readl(&pwm_timer->tcfg0) | 0xff, &pwm_timer->tcfg0);的更多相关文章
- Linux I/O 映射(ioremap)和writel/readl
在裸奔代码中,如果要控制gpio,直接控制gpio寄存器地址即可: 在linux系统中,所有操作的地址都是虚拟地址,都是由linux内核去管理,所以需要将物理地址转换成内核可识别的虚拟地址. 1.io ...
- 内核里面writel(readl)是如何实现的
writel和readl,这两个个函数实现在操作系统层,有内存保护的情况下,往一个寄存器或者内存地址写一个数据.先说一下writel: 在arch/alpha/kernel/io.c中有 void ...
- cortex-a8硬件基础练习
实验要求:定时通过串口打印adc,时间和温度,开关量检测和通过串口接收命令控制led小灯的动作 下面是整理的代码: #include "s5pc100.h"#include &qu ...
- (笔记)AT91SAM9260的启动过程详细解说
Bootstrap的启动过程 一. 说明: Bootstrap启动代码是官方提供的一级启动代码,包括汇编和C语言两部分组成.对AT91SAM9260来说编译完成后,代码长度必须小于4KB,烧写到dat ...
- readb(), readw(), readl(),writeb(), writew(), writel() 宏函数【转】
转自:http://www.netfoucs.com/article/hustyangju/70429.html readb(), readw(), readl()函数功能:从内存映射的 I/O 空间 ...
- linux 设备驱动概述
linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和 ...
- Linux 字符设备驱动开发基础(二)—— 编写简单 PWM 设备驱动【转】
本文转载自:https://blog.csdn.net/zqixiao_09/article/details/50858776 版权声明:本文为博主原创文章,未经博主允许不得转载. https: ...
- Linux驱动之平台设备
<平台设备设备驱动> a:背景: 平台总线是Linux2.6的设备驱动模型中,关心总线,设备和驱动这3个实体.一个现实的Linux设备和驱动通常需要挂接在一种总线上(比如本身依附于PCI, ...
- Linux 设备驱动开发 —— platform设备驱动应用实例解析
前面我们已经学习了platform设备的理论知识Linux 设备驱动开发 —— platform 设备驱动 ,下面将通过一个实例来深入我们的学习. 一.platform 驱动的工作过程 platfor ...
随机推荐
- Newtonsoft.Json(C#处理json)
转载自:http://blog.csdn.net/wswqiang/article/details/6783161 using Newtonsoft.Json; using System.Text; ...
- 嵌入式linux应用开发完全手册学习笔记一
2015.3.25星期三 晴 有两个星期没写学习日记了,找个时间把这段时间做的电子词典和ARM小项目总结一下. 下面的知识点总结,U-BOOT:参考PDF文档:嵌入式linux应用开发完全手册 当虚拟 ...
- HDU5127 神坑题---vector 、 list 、 deque 的用法区别
题意:三个操作 1 a b : 队列中加入(x = a, y = b); -1 a b : 队列中减去(x = a, y = b); 0 p q :从队列的数对中查询哪一对x,y能够让 p * ...
- SQLServer数据库表架构和数据保存成sql文件
一.先在你的mssql数据库中点击“数据库–>任务–>生成脚本” 二.然后我们会看到有“生成和发布脚本”窗口 下一步 三.选择要编写脚本的数据库对象,全部导出选第一个,如果你想导出部分数据 ...
- attention 机制
参考:modeling visual attention via selective tuning attention问题定义: 具体地, 1) the need for region of inte ...
- x-code快捷键
关于xcode 可设偏好设置 command+,清空缓存 可设隐藏xcode command+h隐藏其它 command+option+h显示全部 可设退出xcode command+q 文件相关: ...
- cf340D Bubble Sort Graph
link:http://codeforces.com/problemset/problem/340/D 感觉很好的一道题目. 认真思考,发现,逆序的数字对一定有边相连.所以,题目要求没有边相连的最大的 ...
- SNMP-配置文件详解
当下的 SNMP 服务器通常用来被诸如 Nagios.Cacti.Zabbix 等监控软件收集数据,SNMP 的很多高级特性用的不是特别频繁.因而只需对 SNMP 进行一些简单.基础的配置以满足各种监 ...
- 安全快速修改Mysql数据库名的5种方法
1. RENAME DATABASE db_name TO new_db_name这个..这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了.据说有可能丢失数据.还是不要用的好.详 ...
- ASP.NET Web API 学习【转】
转自:http://www.cnblogs.com/babycool/p/3922738.html 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用J ...