1.S3C2440有5个16位的定时器,其中0,1,2,3定时器都有一个输出引脚,通过定时器控制引脚周期性的输出高低电平(通过引进GPB0~GPB3输出,这是GPB引脚的第三功能),从而实现pwm功能。
2.定时器的时钟源是PCLK,太高,进过两次分频,第一级8位预分频(0~255),第二级4位分频,然后输出5种频率的时钟,2分频,4分频,8分频,16分频和外部时钟TCLK0和TCLK1。定时器的时钟频率=PCLK/(预分频值+1)/(分频值)【预分频值prescaler和分频值mux在寄存器TCFG0和TCFG1中设置】
3.电平反转的原理:当TCNTn的值和TCMPn的值相同时,定时器n有一个反转,会在出书引脚输出一个电平,然后TCNTn继续减1,直至为0,再发生一次反转,在引脚输出一个电平,这样就实现了高低电平的反转,减为0时会触发中断。
4.变相器开关决定了起始输出为高电平还是低电平,也就决定了pwm输出的形式(输出波形图的不同,当定时器停止工作后输出的是最后时刻的电平状态,这样也不一样,通过在开始的时候设置变相器开关的转台就保证了一些设备对电平的要求)
5.自动重载:自动重载在TCNTn的只为0时,将TCNTBn的值重装到TCNTn中,TCMPBn的值会重装到TCMPn中,可以从TCNTon读取TCNTn当前的值【定时器控制寄存器TCON设置】
6.在停止定时器的之前要停止自动重载,否则一直重装初值,TCNTn的值一直和TCMPn的值进行比较,在进行比较的时候TCMPn的值不变,而TCNTn的值不断减1,当TCNTn=TCMPn时,反转电平,然后TCNTn继续减1,到0时,再次反转电平,并触发一个中断,并且自动重装。
7.定时器初始化:1)定时器时钟频率初始化:(定时器频率:每秒会把计数器减去该频率,即每秒减去计数器值得个数叫定时器频率)
2)设置定时器计数值:看项目要求需要输出怎样的方波,譬如需要led灯每隔0.5s闪烁一次,则方波周期t=1s,假设比较值为0 ,则需要每隔0.5秒输出引脚反转一次,而定时器的频率假设为50mhz/(49+1)/16,分频后频率为62500hz,即每秒计数62500,就是说计数到62500个数后电平反转一次,而要求0.5秒反转一次,所以应该把计数初值设为625000/2
3)设置中断函数:用来处理具体的功能,譬如led的亮灭控制

8.寄存器

TCNTBn   :计数缓冲器,当定时器使能的时候,被加载到递减寄存器中的初始值(重载初值寄存器)

TCMPBn :比较缓冲器,加载到比较寄存器中与递减寄存器相比较的初值,决定占空比
TCNTn    :定时器计数器,递减计数器
TCMPn   :定时器比较器,在比较的过程中保持不变
TCNTOn :定时器监视寄存器,能读出TCNTNn和TCNTBn的值
TCFG0    :定时器配置寄存器,决定了各定时器的预分频值
TCFG1      :定时器配置寄存器,决定了各定时器的分频值   定时器的时钟频率=PCLK/(预分频值+1)/(分频值)
TCON       :定时器控制寄存器,决定了各定时器的加载方式,变相器开关,手动更新和定时器启动

s3c2440的pwm输出相关推荐

  1. 集成两路MAX1169的STC8G1K08模块,带有两路PWM输出

    ■ 设计背景 在 集成有MAX1169,MAX520的DAAC单片STC8G1K08机电路板 中设计了集成有MAX1169的ADDA模块,对于一些需要使用PWM驱动的实验,这款模块还无法进行集成实验. ...

  2. STM32F0库函数初始化系列:PWM输出

    void TIM1_Configuration(void) {TIM_TimeBaseInitTypeDef TIM_Time1BaseStructure;TIM_OCInitTypeDef TIM_ ...

  3. 【STM32】PWM 输出实验代码详解

    文章目录 main.c pwm.c pwm.h STM32 的定时器除了 TIM6 和 7,其他的定时器都可以用来产生 PWM 输出. 高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 ...

  4. arduino定时器控制舵机_Arduino学习经验(一)之解决舵机库和pwm输出冲突

    一.前言 最近在公司学习Arduino uno ,用它实现小车超声波避障功能.实现的功能很简单,就是在小车前方挂一个超声波模块,当碰到障碍物时,会通过舵机进行摆头,判断两边的距离,进行左右转弯.但是碰 ...

  5. stm32 PWM输出学习

    STM32 的定时器除了 TIM6 和 7,其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.通用定时器也能同时产生多达 4路 ...

  6. 单片机 PWM输出 c

    #include<reg52.h> #include<intrins.h>  //包含_nop_(),汇编中的子函数 #define uchar unsigned char s ...

  7. pwm一个时间单位_详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!...

    一.stm32的pwm输出引脚是使用的IO口的复用功能. 二.T2~T5这4个通用定时器均可输出4路PWM--CH1~CH4. 三.我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并 ...

  8. stm32f4 输出pwm波_stm32的pwm输出代码及注释

    stm32是非常常用的单片机.脉冲宽度调制(PWM),是英文"Pulse WidthModulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非 ...

  9. STM32 PWM输出(映射)

    STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定 时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定时器也能同时产生多达 ...

  10. STM32 PWM输出实验

    定时器用来产生PWM输出: STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通 ...

最新文章

  1. 网页录音解决方案 FlashWavRecorder For Website API 关键地方已注释
  2. Schrödinger's Knapsack ZOJ - 4019 线性DP
  3. Docker JFrog Artifactory 7.27.10 maven私服(IDEA 实战篇01) linux
  4. CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
  5. (亲测可行)vivo设备一键激活xposed框架方法
  6. mysql数据库设置索引 以下_如何设置MySQL数据库表的索引总长度
  7. C语言:内存字节对齐详解
  8. win7与winxp双系统安装后的引导过程
  9. Java中使用POI导出excel文件
  10. 安装svn和安装svn汉化语言包
  11. 【Maxscript入门】学习笔记整理一
  12. 网络游戏外挂与反外挂的研究
  13. 使用DevOps强化敏捷(上)
  14. python range 小数_python中如何表示一个无限循环小数?(不用分数的形式)python,使用range语...
  15. 【PMP认证考试感悟】走向管理的开始
  16. 海洋cms index.php被修改,海洋CMS(SEACMS)新版本V6.55补丁仍可被绕过执行任意代码...
  17. 第二篇 第三章防火防烟分区检查(一)
  18. 夜神模拟器连接手柄无反应_夜神安卓模拟器怎么连接手柄 夜神模拟器连接手柄教程...
  19. properties的配置信息出现\u7684\u6570\u636e\u5e93\u914d\u7f6e
  20. NLP相关知识点问答总结(三)

热门文章

  1. 在 Silverlight 中管理动态内容交付,第 1 部分
  2. 关于systemtap的一些examples
  3. 基于dpdk的用户态协议栈f-stack实现分析
  4. 是谁关闭了Linux抢占,而抢占又关闭了谁?
  5. visual studio code写c语言是在include下有绿色的下划线提示not found
  6. C#语法基础(三)----窗体设计
  7. 51nod1010----只包含因子2 3 5的数
  8. 大学计算机实验教程实验报告2.2,大学计算机实验2 实验报告.pdf
  9. java套接字实验总结,实验三、WINSOCK套接字编程实验报告
  10. java字段映射替换框架一对多_java之mybatis之字段映射及多对一