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\1769之中断优先级与中断优先级组
一.背景 USB在持续通信几十万次后,会出现USB IN中断丢失几次的情况,分析是中断优先级不够高,导 致USB中断在排队,然而排队还未完成,又有新的USB中断发生,致使其中断丢失.LPC1769的所 ...
- STM32之PWM君
PWM..英语好的人估计又知道这三个大写字母代表哪三个英语单词了.小弟不才,就说中文意思好了:脉冲宽度调制,玩过飞思卡尔的人估计对PWM非常的不陌生吧.电机驱动需要PWM,控制舵机的转向需要PWM,总 ...
- [nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM
一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指 ...
- Windows on Device 项目实践 1 - PWM调光灯制作
在前一篇文章<Wintel物联网平台-Windows IoT新手入门指南>中,我们讲解了Windows on Device硬件准备和软件开发环境的搭建,以及Hello Blinky项目的演 ...
- LPC1768/1769之CAN控制器概述(附库函数下载地址)
一.背景: 使用LPC1769来做CAN的收发,在此对使用LPC1769的CAN控制器进行收发做个总结和记录,以备下 次开发快速上手使用. 附:LPC1768/1769除了支持最高频率不同以外,其它基 ...
- 用Arduino剖析PWM脉宽调制
PWM(Pulse Width Modulation)简介 PWM,也就是脉冲宽度调制,用于将一段信号编码为脉冲信号,也就是方波信号.多用于在数字电路中驱动负载随时间变化的电子元件,如LED,电机等. ...
- Arduino学习经验(一)之解决舵机库和pwm输出冲突
一.前言 最近在公司学习Arduino uno ,用它实现小车超声波避障功能.实现的功能很简单,就是在小车前方挂一个超声波模块,当碰到障碍物时,会通过舵机进行摆头,判断两边的距离,进行左右转弯.但是碰 ...
- stm8s103 PWM
stm8s103 PWM的设置不难,但是很多人不注意选项字节这个问题,PWM是IO口的第二功能,要用ST Visual Programmer 修改选项字节. 只需要修改AFR0的功能就可以了
- 驱动实现led,pwm和中断基础知识
2015.4.8星期三 晴天 今天老师讲的内容是内核编写led和pwm驱动,实现花样灯和放歌的功能.理解应用和驱动的对接,最后自己实现了在放歌的时候根据歌曲的节奏亮灭一个小灯,应为两个独立的驱动都已经 ...
随机推荐
- cocos2d-x 那些常犯的错误
Label::_label; if(_label==NULL){ //初始化_label的代码 } //指针默认值不等于NULL,需要赋初始值Label::_label=NULL; string st ...
- 多校 Cow Bowling
题目链接:http://acm.hust.edu.cn/vjudge/contest/124435#problem/I 密码:acm Sample Input Sample Output 分析: #i ...
- 转:Selenium借助AutoIt识别上传(下载)详解
AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动 ...
- mysql 索引相关
引言: MYSQL由于其免费和开源的性质,在项目中用处广泛.大家都知道,一个MySQL数据库能够储存大量的数据,如果要在大量的数据中查找某一个数据,如果使用全表检索的话,即费时间又费力气,这时,就需要 ...
- Android中在布局中写ViewPager无法渲染出来的问题
今天刚刚使用Android Studio,在写ViewPager时,首先按F4把Dependencies添加一个V4包,然后写ViewPager,如下: <android.support.v4. ...
- php socket客户端及服务器端应用实例
经常有朋友会对php的socket应用充满疑惑,本文就以实例代码作一讲解,希望能对初学php的朋友起到一点帮助作用 具体代码如下: 1.服务器端代码: <?php class SocketSer ...
- Genymotion开启就全部白屏解决方法
Genymotion开启就整个界面全部白屏,包括菜单栏也白屏,解决方法: 很可能是显卡驱动有问题,用驱动人生或者驱动精灵更新显卡驱动就可以了. 目前开发者好用的模拟器有: 1.Genymotion 2 ...
- 服务器修改 ssh 22端口
我们首先修改配置文件,让ssh 通知支持2个端口访问 ,22 和 23456 端口. Port 22 Port 23456 为什么要这样: 万一我用 23456端口替换了22端口,但是 23456正好 ...
- FusionCharts使用问题及解决方法(一)-FusionCharts常见问题大全
当你利用FusionCharts创建图表时报错,原因是多方面的.本文总结了一些常见问题及解决方法供大家参考,希望对大家有帮助. 如果你无法看到任何图表: 如果浏览器中的进度条一直加载,或者右键菜单显示 ...
- Shorten Diameter
Shorten Diameter Time limit : 2sec / Stack limit : 256MB / Memory limit : 256MB Score : 600 points P ...