观察DR寄存器bit31位来确认是否转换完成,属于查询方式,如果没有转换完成,程序会停在检测的那条语句处,不能做其他的事情,极大的浪费了处理器的资源,这一节,介绍更为效率的中断方式。
给ADINTEN寄存器对应ADINT位写1,当ADC转换完成后,会引发ADC转换中断。
ADINTEN寄存器:
位 | 符号 | 描述 | 复位值 |
7:0 | ADINT | 这个位决定了哪个通道转换完成后产生中断。例如:当bit1=1,当AD1通道转换完成后,产生中断 | 0x00 |
8 | ADGINT | 如果这个位是1,当全局DR寄存器的DONE位置1,引发中断
注意:当BURST=1,即硬件扫描模式下,如果用中断,只能用bit7:0这个位必须为0 | 1 |
31:9 | – | 保留 | 0 |
在ADC_Init()函数中,加入下面两条语句开启ADC中断。
LPC_ADC->INTEN = (1<在main.c文件或者adc.c文件中,写入中断服务函数,如下所示:
void ADC_IRQHandler(void)
{
uint16_t adc_value;
adc_value = (LPC_ADC->DR[Channel]>>6)&0x3FF;
adc_value = (adc_value*Vref)/1024;
UART_send_byte(adc_value);
UART_send_byte(adc_value>>8);
}
假如设置了CAP引脚触发转换,当CAP引脚上出现上升沿或下降沿时,就会触发ADC转换,转换结束后,进入ADC中断服务函数。
关键字:lpc1114 adc中断
引用地址:
lpc1114 adc中断
推荐阅读最新更新时间:2024-03-16 15:24
LPC1114系统定时器(SysTick)
在LPC1114内部有一个特殊的定时器 系统定时器(SysTick),它位于Cortex-M0内核里面,是ARM内核的一部分,主要用来给操作系统提供时间片轮转的定时,一般固定为10ms的定时,所以中文也称它为 嘀哒 定时器。在不跑操作系统时,可以把它当作普通定时器来用,一般用来进行程序延时。在前面的第一个演示示例中就用到过,下面就来讨论一下如何运用SysTick来提供延时。 系统定时器也位于 私有外设总线 (Private peripheral bus)内,其地址为0xE000E010~0xE000E01F。下面先来看一下SysTick的内部结构,如下图所示。 从上图中可以看出,SysTick定时器的位长度是24位,即最长的计
[单片机]
LPC1114如何使用MDK与JLINK连接使用问题
在前不久我应用LPC1114做了个MP3开发板,在使用JLINK工具下的SWD方式下载非常完美。但在在最近在用LPC1114做另外一个项目时,发现,用JLINK工具的SWD方向调试,总是会提示如下(mdk4.13),很多网友也遇到了这个问题: 通过不断努力终于找到原因了:我在使用4.13a时,只能设置如下,才能正常工作: 而用4.12时的设置如下: 由上面的看得出来,4.12的设置为大家普遍采用的设置,而4.13的则不同。所以说明了,在使用MDK与JLINK调试时一定要注意设置,而且不同版本的设置是不一样的。至于为什么会这样就不得而知了。通过测试4.14发现是可以像4.12那样的设置,
[单片机]
lpc1114看门狗_如何启动和喂狗
启动看门狗定时器的函数代码如下所示: void WDT_Enable(uint8_t mode) { LPC_SYSCON- PDRUNCFG &= ~(0x1 6); // 看门狗振荡器时钟上电(bit6) LPC_SYSCON- WDTOSCCTRL = (0x1 5); // WDT_OSC_CLK=300KHz LPC_SYSCON- WDTCLKSEL = 0x2; // 选择看门狗振荡器时钟 LPC_SYSCON- WDTCLKUEN = 0x01; // 更新时钟源 LPC_SYSCON- WDTCLKUEN = 0x00; // 先写0,再写1达到更新目的 L
[单片机]
cortex m0 lpc1114程序下载失败
lpc1114可以自动ISP下载程序。因为它在出厂前,片内被固化了bootloader程序,片引出了boot引脚。bootloader用来引导单片机是执行下载程序的任务,还是执行片内已有的程序。这个判断就是依靠外部的boot引脚高低电平决定的。 单片机通电后,首先会运行bootloader程序,这个程序是依靠内部的IRC时钟来工作的,bootloader首先检查boot引脚电平,如果是低电平,就执行下载任务,等待程序的下载;如果是高电平,就执行片内的已有的用户程序。简单吧! 手动下载: 按照bootloader的原理,首先将boot引脚接地,然后给单片机上电,然后用flash magic下载程序即可。下载完程序后,把boot引脚与
[单片机]
STM32F103VET6——ADC单通道中断读取实验讲解
编程要点 Define GPIO ADC_InitTypeDef ADC时钟 通道的转换顺序和采样时间 使能ADC转换完成中断 使能ADC转换开始 校准ADC 选取ADC转化触发源 配置中断优先级 编写中断服务函数 main函数 /*-----GPIO-----*/ static void ADC_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_GPIO_APBxClock_FUN ( ADC_GPIO_CLK, ENABLE ); GPIO_InitStructure.GPIO_Pin = ADC_PIN; //必须为模拟输入 GPIO
[单片机]
LPC1114/LPC11U14和LPC1343对比学习(二)GPIO
对处理器的学习一般都是从GPIO开始,下面我们将对比这三种芯片的GPIO的应用及区别。 下面三个表示是三种芯片的GPIO寄存器,从表可以看出,LPC1114的GPIO和LPC1343的GPIO寄存器是兼容的,也就是说这 两类芯片的端口控制程序也是完全兼容的;反而LPC11U14作为LPC1100系列的一员却并不兼容,不知道NXP为什么要这样设计,真让人困惑啊? GPIO寄存器 1. LPC1114 GPIO寄存器 2. LPC11U14 GPIO寄存器 3. LPC1343 GPIO寄存器 对于LPC1114和LPC1343两种GPIO的设置方法是一样的,就是寄存器也是一致的,都不复杂。但是对于LPC11U14来说
[单片机]
lpc1114系统定时器systick
SysTick是Cortex-M0内核的一部分。它主要被用来作为嵌入式操作系统的10ms中断定时器。在单片机不上操作系统的时候,它就可以作为一个普通的定时器使用。 SysTick是一个24位的倒计时定时器。也就是说它在工作的时候,是倒着数数的。例如给这个定时器的初值为488,它将会从488倒着数到0,然后产生中断。 寄存器定义 1. 系统定时器控制和状态寄存器CTRL 位 符号 描述 复位值 0 ENABLE 系统定时器允许位。1,允许;0,不允许。 0 1 TICKINT 系统定时器中断允许位。1,允许;0,不允许。 0 2 CLKSOURCE 系统定时器时钟源选择位。1,时钟=主时钟;0,时钟=主时钟/2. 1
[单片机]
NXP_LPC1114_LED灯程序
#include LPC11XX.h #include gpio.h #include main.h void Delay_Sec(u8 Time) { u16 i; while(Time) { for(i=0;i 3000000;i++); Time--; } } void Delay_Ms(u16 Time) { u16 i; while(Time) { for(i=0;i 3000;i++); Time--; } } int main(void) { SystemInit(); //系统初始化--主要是设置主时钟 GPIOInit(); //IO口初始化-
[单片机]