lpc1768的PWM使用

发布者:温柔的心情最新更新时间:2017-01-12 来源: eefocus关键字:lpc1768  PWM使用 手机看文章 扫描二维码
随时随地手机看文章

//p2.0 pwm1.1

void ALS_Init(void)     //初始化

{

    LPC_SC->PCONP |= (1<<1)|(1<<2)|(1<<15);//打开时钟

    LPC_SC->PCLKSEL0 &= ~(3<<2);    //时钟25M

    LPC_SC->PCLKSEL0 &= ~(3<<4);

   

    //p2.0

    LPC_PINCON->PINSEL4 &= ~(0X03L<<0);     //GPIO

    LPC_PINCON->PINMODE4 &= ~(0X03L<<0);    //使能上拉

    LPC_PINCON->PINMODE_OD2 &= ~(0X01<<1);  //推挽正常模式

    P2dir(0) = 1;//输出

   

    LPC_TIM1->TCR |= (1<<1);                        //复位定时器

    LPC_TIM1->CTCR = 0x00;                          //定时器模式

    LPC_TIM1->PC = 0X00;

    LPC_TIM1->PR   = 25-1;                          //预分频,计数频率1m

    LPC_TIM1->MR0  = 20;                            //25*100  2500 频率10K

    LPC_TIM1->MR1  = 100;

    LPC_TIM1->MCR |= ((1<<0)|(1<<3)|(1<<4));                //MR0与TC值匹配时将产生复位 产生中断 MR1匹配时产生中断 不复位

   

    LPC_TIM1->IR  |= 0XFF;                          //清所有中断标志位

    LPC_TIM1->TCR  = (1<<0);                        //启动定时器

   

    NVIC_EnableIRQ(TIMER1_IRQn);                   

}

 

void ALS_Set_Duty(u8 duty)      //设置占空比

{

    LPC_TIM1->TCR  = 0;                     //暂停定时器

    if(duty >= 100)duty = 99;

    if(duty == 0)duty = 1;

    LPC_TIM1->MR0 = duty;

    LPC_TIM1->TCR  = (1<<0);                        //启动定时器

}

 

void ALS_Stop(void)

{

    LPC_TIM1->TCR  = 0;                     //暂停定时器

    P2low(0) = 1;                           //电平恒定

}

 

 

void TIMER1_IRQHandler(void)

{

    NVIC_ClearPendingIRQ(TIMER1_IRQn);

    if( LPC_TIM1->IR &0x01) //mr0中断

    {

        P2low(0) = 1;

        LPC_TIM1->IR |= (1<<0);         //清中断标志

    }

    else if(LPC_TIM1->IR &0x02)

    {

        P2high(0) = 1;

        LPC_TIM1->IR |= (1<<1);         //清中断标志

    }

}


关键字:lpc1768  PWM使用 引用地址:lpc1768的PWM使用

上一篇:LPC1768定时器普通定时
下一篇:LPC1768的IIS通讯

推荐阅读最新更新时间:2024-03-16 15:30

使用stm32的HAL库完成pwm输入模式测量频率和占空比的详细教程
STM32定时器具有PWM的输入捕获模式。 PWM输入捕获是定时器输入捕获的一个特例,单通道的输入捕获只能获取波形的频率,但是PWM输入捕获可以获取到频率和占空比,对应的高低电平宽度也就能获取到。 它的时序如下图所示: 使用cubemx配置方法: 就是使用TIM2的ch1和ch2来捕获一个pwm信号。 这里只测试了update event,我测试55khz使用该分频与计数值可以正常工作,不过第一次捕获的数据是随机数,需要丢弃。另外这里分频值我改成89的时候不太正常,捕获到的占空比出现错误,更改为0之后正常。这里需要注意的是F429的TIM2是在APB1下,时钟频率90Mhz。而TIM1/TIM8则是在AP
[单片机]
<font color='red'>使用</font>stm32的HAL库完成<font color='red'>pwm</font>输入模式测量频率和占空比的详细教程
AVR定时/计数器在使用PWM功能设计要点与应用实例
一、定时/计数器PWM设计要点 根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点: 1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率肟刂频亩韵笥泄亍H缡涑鯬WM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。 2.然后根据需要PWM的频率范围确定ATmega128定时/计数器的PWM工作方式。AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。 3.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率
[单片机]
LPC1768程序执行问题
使用keil MDK调试程序 使用LPC1768控制一些电磁铁,使用上位机控制电磁铁,都可以单独控制,但是用传感器控制电磁铁,控制一个电磁铁,其他电磁铁也动作,所调用的函数一样的,不知怎么回事。 经过分析,发现是堆栈问题,堆栈太小,局部变量被覆盖。增加堆栈大小。 在startup_LPC17xx.s文件中, Stack_Size EQU 0x00000200 改为 Stack_Size EQU 0x00000250 就解决了问题 后来发现,不是这个问题,而是IO设为输入与输出的问题。
[单片机]
LPC1768/1769之CAN控制器概述(附库函数下载地址)
一、背景: 使用LPC1769来做CAN的收发,在此对使用LPC1769的CAN控制器进行收发做个总结和记录,以备下 次开发快速上手使用。 附:LPC1768/1769除了支持最高频率不同以外,其它基本上一致。 二、正文: 先贴一张LPC1769 CAN控制器的方框图:   . 由上图可见,整个CAN控制器一头是CPU,另一头是CAN收发器:      CAN收发器负责CAN数据与CAN网络的通信。CAN内核模块解析和封装要发送到CAN收发器以及从CAN    收发器发过来的数据,此处CAN内核工作由硬件自行完成。      CPU通过APB总线即可设置CAN控制器状态,以及读取中断信息
[单片机]
<font color='red'>LPC1768</font>/1769之CAN控制器概述(附库函数下载地址)
STM8S(105K4)使用笔记——通过TIM1输出PWM做呼吸灯
STM8S105K4相关 已知的可以作为TIM1 PWM的输出通道为PC1、PC2、PC3、PC4。 已知可选的TIM1时钟为fmaster。 若使用的STM8S的芯片不为105K4,请查阅芯片相对应的文档,确认TIM1的PWM的输出通道,同时设置相应的选项字节。 呼吸灯功能需求设置 呼吸灯有这么两个最常见的功能需求: LED灯一次灭到亮的耗时T(s),即周期/2 LED灯的刷新率P(Hz) 由这两个参数可得: LED灯一次灭到亮需要刷新的次数N,N = T × P 例如: LED灯一次灭到亮需求为1.5s LED灯的刷新率为60Hz(约每0.017s刷新一次) LED灯一次灭到亮需要刷新的次数为90次 至此,
[单片机]
STM8S(105K4)<font color='red'>使用</font>笔记——通过TIM1输出<font color='red'>PWM</font>做呼吸灯
关于STM32的 一个TIM1 的PWM程序和PWM简单使用
高级定时器与通用定时器比较类似,下面是一个TIM1 的PWM 程序,TIM1是STM32唯一的高级定时器。共有4个通道有 死区有互补。 先是配置IO脚: GPIO_InitTypeDef GPIO_InitStructure; /* PA8设置为功能脚(PWM) */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /*P
[单片机]
关于STM32的 一个TIM1 的<font color='red'>PWM</font>程序和<font color='red'>PWM</font>简单<font color='red'>使用</font>
STC单片机硬件PWM使用分析
STC单片机(具有PCA功能的),怎么实现可变频率的PWM输出?很多朋友还在使用定时器做可变频PWM, 这里我就介绍怎么使用硬件PWM,在定时器0的分频基数下设计PWM。 首先看CMOD这个寄存器,这里我们主要关注 CPS0,CPS1,CPS2,这三个位控制选择PCA的计数脉冲源。 对应PWM功能,则是选择频率。 首先可以选择 6个固定分频,可以看图片看出,分别是1,2,4,6,8,12的系统分频。我们需要做可变频率的PWM,所以我们需要选择模式2,选择定时器0的溢出作为系统分频基数。 然后,我么看怎么具体的去计算,去实现分频。 这里就需要上面这个图片的计算规则。 这里我举一个例子来说明,比如我们单片机的晶振使用的是12MH
[单片机]
STC单片机硬件<font color='red'>PWM</font>的<font color='red'>使用</font>分析
STM32F1/F7使用HAL库DMA方式输出PWM详解
什么是PWM? 核心提示:文章目录一. STM32的DMA PWM原理1. DMA简介2. DMA方式输出PWM是怎么回事3. HAL库DMA配置PWM的几个函数二. STM32CubeMx配置 DMA PWM三. 波形调试过程分析一. STM32的DMA PWM原理最开始疑惑过STM32如何才能实现精确数量的脉冲输出从而控制步进电机,直到做WS2812B灯珠的驱动程序时才知道原来有DMA-PWM模式。使用DMA输出PWM可以精确控制脉冲数量,且可以精确控制脉冲周期与占空比,更重要的是使用DMA传输不消耗CPU资源。 文章目录 一. STM32的DMA PWM原理1. DMA简介2. DMA方式输出PWM是怎么回事3. HAL库D
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved