当前位置:首页 > 单片机 > 单片机
[导读]MAT触发转换并不是由外部信号引起的,而是由自身定时器的匹配引起的。一共有四个匹配寄存器可以用于MAT触发转换,它们分别是:CT16B0MAT0、CT16B0MAT1、CT32B0MAT0、CT32B0MAT1。这里,以CT16B0MAT0为例介绍。新建一

MAT触发转换并不是由外部信号引起的,而是由自身定时器的匹配引起的。一共有四个匹配寄存器可以用于MAT触发转换,它们分别是:CT16B0MAT0、CT16B0MAT1、CT32B0MAT0、CT32B0MAT1。

这里,以CT16B0MAT0为例介绍。

新建一个工程,结构如下图所示:

文件都用《cortex m0 lpc1114 adc start位控制转换》一节的。

在adc.h文件中,加入TIM16B0_MAT_Init()函数的声明,如下所示:

#ifndef__NXP_ADC_H#define__NXP_ADC_H#defineVref3300externvoidADC_Init(uint8_tChannel);externuint32_tADC_Read(uint8_tChannel);externvoidTIM16B0_MAT_Init(uint16_tcycle_ms);#endif

在adc.c文件中,加入TIM16B0_MAT_Init()函数的定义,如下所示:

voidTIM16B0_MAT_Init(uint16_tcycle_ms){LPC_SYSCON->SYSAHBCLKCTRL|=(1<<7);//使能TIM16B0时钟LPC_TMR16B0->TCR=0x02;//复位定时器(bit1:写1复位)LPC_TMR16B0->PR=SystemCoreClock/1000-1;//1msTC+1LPC_TMR16B0->MR0=cycle_ms;LPC_TMR16B0->IR=0x01;//MR0中断复位LPC_TMR16B0->MCR=0x02;//MR0中断产生时复位TCLPC_TMR16B0->EMR=0x31;//MR0与PC相等时,MAT0引脚翻转电平LPC_TMR16B0->TCR=0x01;//启动定时器:TCR[0]=1;}

这个函数,用于MAT0产生电平翻转,当发生下降沿的时候,ADC开始转换。MR0寄存器用于存储ADC转换的时间。实际上,转换的时间是MR0值的两倍,因为,当MR0与TC匹配的时候,发生电平翻转,发生有低到高的上升沿时,不会发生ADC转换。

在main.c文件中,输入以下代码:

#include"lpc11xx.h"#include"uart.h"#include"adc.h"intmain(){uint16_tadc_value;UART_init(9600);ADC_Init(7);TIM16B0_MAT_Init(500);while(1){adc_value=ADC_Read(7);UART_send_byte(adc_value>>8);UART_send_byte(adc_value);}}

打开串口调试助手,选好串口号,波特率调成9600,选择十六进制接收,会看到串口助手上间隔1秒中,发送一次AD7(P1.11)引脚上测到的电压。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

你知道MCU之选型不得不知的那些事儿吗?MCU换言之,可以理解为单片机。MCU所应用的场景:一般只要稍微有点UI电器,所以我们身边无处所在都是单片机的影子。MCU可以比喻成人体的心脏,是最为重要的核心部分。所以MCU的选...

关键字: 单片机 adc转换 低功耗

中断方式串口接收数据新建一个工程,结构如下图所示:在main.c文件中,输入以下代码:#include “lpc11xx.h”#include “uart.h”uint8_t rec_buf;void UART_IRQH...

关键字: Cortex lpc1114 mo uart 串口中断 收发数据

LPC_IOCON->R_PIO1_0 &= ~0x07;LPC_IOCON->R_PIO1_0 |= 0x02;上面是设置P1.0为AD1的语句。P1.0低三位是引脚功能选择位,所以配置低三位就可以...

关键字: lpc1114 引脚功能 设置

LPC1114内部一共有4个定时器,2个32位定时器,2个16位定时器,使用方式都一样,只是要注意使用16位定时器时,寄存器的值不要超出65535。给它们分别取名称为CT16B0、CT16B1、CT32B0、CT32B1...

关键字: lpc1114 通用定时器

你还在为如何给LPC1114主控的电路板留程序下载接口而烦恼吗?下面瑞生(Ration)以自己曾经做过的项目为例给大家分享一下吧!1.LPC1114如何下载程序?这个当然是你必须要知道的问题。LPC1114一共2种下载方...

关键字: lpc1114 程序下载接口

#include\"ds18b20.h\"uint8_ttemp_sign;voiddelay_ds(uint16_tzz){uint8_txx;uint16_tyy;for(xx=0;xx

关键字: 18b20 lpc1114 测量温度

某同学:你好,看了基础篇SysClk、GPIO、UART的例程,在用到IOCON模块,UART模块在SYSAHBCLKCTRL寄存器中都需要相应时钟允许位置1,IOCON使能,在设置完后又禁能,UART使用时只使能,不用...

关键字: lpc1114 iocon 模块时钟

32位的单片机内部各种数据寄存器和控制寄存器都是32位的,同理,8位单片机内部的数据和控制寄存器都是8位的。例如:AT89C51单片机的“中断控制寄存器”IE定义如下图所示:bit7bit6bit5bit4bit3bit...

关键字: ARM Cortex lpc1114 m0 寄存器配置

新建一个工程,结构如下图所示:timer.h文件和timer.c文件用上一节的。在timer.h中增加两个变量和两个函数的声明,如下所示:#ifndef __NXPLPC11xx_TIME_H__#define __NX...

关键字: lpc1114 pwm 通用定时器

LPC1114的中断,由中断控制模块NVIC控制。一共32个中断,每个中断的优先级可编程为 0~3 四种级别。级别越高对应的优先级越低。因此,级别0 是最高的中断优先级。设置中断优先级的函数,CMISIS已经写好,并嵌入...

关键字: cortex-m0 lpc1114 中断优先级
关闭
关闭