实验一:SysTick实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*----------------------------------------------------------------------------*/
void LED_Out(void) {
if ((LPC_GPIO1->DATA & (1<<9))) {
LED_On ();
} else {
( 1UL << 21); /* enable ADC */
LPC_ADC->INTEN = ( 1UL << 8); /* global enable interrupt */
NVIC_EnableIRQ(ADC_IRQn); /* enable ADC Interrupt */
}
/*----------------------------------------------------------------------------
LPC_IOCON->R_PIO0_11 = (2UL << 0); /* P0.11 is AD0 */
LPC_GPIO0->DIR &= ~(1UL << 11); /* configure GPIO as input */
/* configure ADC */
LPC_SYSCON->PDRUNCFG &= ~(1UL << 4); /* Enable power to ADC block */
实验一:SysTick实验
内容:利用LPC1114 DevKit开发板或者LPC1114 MASB最小系统板,以LPC1114为处理器,设定时钟频率48MHz,利用SysTick定时器定时1秒(如何才能定时1秒?),在中断子程序中控制(PIO1_9)引脚LED灯的闪烁功能。编写C语言代码进行实现。写出配置子程序、中断服务子程序和主程序。在中断子程序中设置断点,观察是否能产生中断。利用Keil的软件模拟功能或者在Proteus软件仿真平台上进行仿真调试。
LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 13); /* Enable clock to ADC block */
LPC_ADC->CR = ( 1UL << 0) | /* select AD0 pin */
(23UL << 8) | /* ADC clock is 24MHz/24 */
/* configure GPIO as output */
LPC_GPIO1->DIR |= 1<<9;
LPC_GPIO1->DATA &= ~(1<<9);
}
/*----------------------------------------------------------------------------
int main (void) {
LED_init();
TMR32B0_Init();
while (1)
{
}
return(0);
}
2.总结
这是第一次实验,总体来说还比较模糊,很多不懂的地方,对实验任务的把握也不够,很多地方都不会,第一次实验很不顺利,等老师做出来之后,照着老师给的程序,才在第二节课调试出来。其他方面,在刚开始做实验的时候,因为不熟悉所以经常会犯错。比如大小写的混用以及括号的使用等等。在编译成功后,就需要注意配置下载器,根据使用的开发板配置相应的下载器,由于教学使用开发板配置J-Link下载器,故使用J-Link就可以下载成功。下载成功后就可以观察实验现象。在整个实验过程中,自己对keil软件并没有很好地掌握运用,今后一定好好学习使用keil。争取对这个软件比较熟悉,以便于后面实验的操作。
1UL << 4, 1UL << 5, 1UL << 6, 1UL << 7 };
/* Import external functions from Serial.c file */
extern void SER_init (void);
/* Import external variables from IRQ.c file */
LED_Off();
}Fra Baidu bibliotek
}
void TMR32B0_Init(void)
{
LPC_SYSCON->SYSAHBCLKCTRL|=(1UL<<9);
LPC_TMR32B0->IR =0X1F;
LPC_TMR32B0->PR=0;
LPC_TMR32B0->MCR=3;
LPC_TMR32B0->MR0=SystemCoreClock;
Function that turns on requested LED
*----------------------------------------------------------------------------*/
void LED_Off (void) {
LPC_GPIO1->DATA |= 1<<9;
LPC_TMR32B0->TCR=0x01;
NVIC_EnableIRQ(TIMER_32_0_IRQn);
}
/*----------------------------------------------------------------------------
MAIN function
*----------------------------------------------------------------------------*/
void LED_On (void) {
LPC_GPIO1->DATA &= ~(1<<9);
}
/*----------------------------------------------------------------------------
Function that outputs value to LEDs
void ADC_init (void) {
/* configure PIN GPIO0.11 for AD0 */
LPC_SYSCON->SYSAHBCLKCTRL |= ((1UL << 6) | /* enable clock for GPIO */
(1UL << 16) ); /* enable clock for IOCON */
1.程序源代码
#include <stdio.h>
#include "LPC11xx.h" /* LPC11xx definitions */
#define LED_NUM 8 /* Number of user LEDs */
const unsigned long led_mask[] = {1UL << 0, 1UL << 1, 1UL << 2, 1UL << 3,
Function that initializes LEDs
*----------------------------------------------------------------------------*/
void LED_init(void) {
LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 6); /* enable clock for GPIO */
/*----------------------------------------------------------------------------
Function that initializes ADC
*----------------------------------------------------------------------------*/
}
/*----------------------------------------------------------------------------
Function that turns off requested LED
*----------------------------------------------------------------------------*/
extern volatile unsigned short AD_last;
extern volatile unsigned char clock_1s;
/* variable to trace in LogicAnalyzer (should not read to often) */
volatile unsigned short AD_dbg;
void LED_Out(void) {
if ((LPC_GPIO1->DATA & (1<<9))) {
LED_On ();
} else {
( 1UL << 21); /* enable ADC */
LPC_ADC->INTEN = ( 1UL << 8); /* global enable interrupt */
NVIC_EnableIRQ(ADC_IRQn); /* enable ADC Interrupt */
}
/*----------------------------------------------------------------------------
LPC_IOCON->R_PIO0_11 = (2UL << 0); /* P0.11 is AD0 */
LPC_GPIO0->DIR &= ~(1UL << 11); /* configure GPIO as input */
/* configure ADC */
LPC_SYSCON->PDRUNCFG &= ~(1UL << 4); /* Enable power to ADC block */
实验一:SysTick实验
内容:利用LPC1114 DevKit开发板或者LPC1114 MASB最小系统板,以LPC1114为处理器,设定时钟频率48MHz,利用SysTick定时器定时1秒(如何才能定时1秒?),在中断子程序中控制(PIO1_9)引脚LED灯的闪烁功能。编写C语言代码进行实现。写出配置子程序、中断服务子程序和主程序。在中断子程序中设置断点,观察是否能产生中断。利用Keil的软件模拟功能或者在Proteus软件仿真平台上进行仿真调试。
LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 13); /* Enable clock to ADC block */
LPC_ADC->CR = ( 1UL << 0) | /* select AD0 pin */
(23UL << 8) | /* ADC clock is 24MHz/24 */
/* configure GPIO as output */
LPC_GPIO1->DIR |= 1<<9;
LPC_GPIO1->DATA &= ~(1<<9);
}
/*----------------------------------------------------------------------------
int main (void) {
LED_init();
TMR32B0_Init();
while (1)
{
}
return(0);
}
2.总结
这是第一次实验,总体来说还比较模糊,很多不懂的地方,对实验任务的把握也不够,很多地方都不会,第一次实验很不顺利,等老师做出来之后,照着老师给的程序,才在第二节课调试出来。其他方面,在刚开始做实验的时候,因为不熟悉所以经常会犯错。比如大小写的混用以及括号的使用等等。在编译成功后,就需要注意配置下载器,根据使用的开发板配置相应的下载器,由于教学使用开发板配置J-Link下载器,故使用J-Link就可以下载成功。下载成功后就可以观察实验现象。在整个实验过程中,自己对keil软件并没有很好地掌握运用,今后一定好好学习使用keil。争取对这个软件比较熟悉,以便于后面实验的操作。
1UL << 4, 1UL << 5, 1UL << 6, 1UL << 7 };
/* Import external functions from Serial.c file */
extern void SER_init (void);
/* Import external variables from IRQ.c file */
LED_Off();
}Fra Baidu bibliotek
}
void TMR32B0_Init(void)
{
LPC_SYSCON->SYSAHBCLKCTRL|=(1UL<<9);
LPC_TMR32B0->IR =0X1F;
LPC_TMR32B0->PR=0;
LPC_TMR32B0->MCR=3;
LPC_TMR32B0->MR0=SystemCoreClock;
Function that turns on requested LED
*----------------------------------------------------------------------------*/
void LED_Off (void) {
LPC_GPIO1->DATA |= 1<<9;
LPC_TMR32B0->TCR=0x01;
NVIC_EnableIRQ(TIMER_32_0_IRQn);
}
/*----------------------------------------------------------------------------
MAIN function
*----------------------------------------------------------------------------*/
void LED_On (void) {
LPC_GPIO1->DATA &= ~(1<<9);
}
/*----------------------------------------------------------------------------
Function that outputs value to LEDs
void ADC_init (void) {
/* configure PIN GPIO0.11 for AD0 */
LPC_SYSCON->SYSAHBCLKCTRL |= ((1UL << 6) | /* enable clock for GPIO */
(1UL << 16) ); /* enable clock for IOCON */
1.程序源代码
#include <stdio.h>
#include "LPC11xx.h" /* LPC11xx definitions */
#define LED_NUM 8 /* Number of user LEDs */
const unsigned long led_mask[] = {1UL << 0, 1UL << 1, 1UL << 2, 1UL << 3,
Function that initializes LEDs
*----------------------------------------------------------------------------*/
void LED_init(void) {
LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 6); /* enable clock for GPIO */
/*----------------------------------------------------------------------------
Function that initializes ADC
*----------------------------------------------------------------------------*/
}
/*----------------------------------------------------------------------------
Function that turns off requested LED
*----------------------------------------------------------------------------*/
extern volatile unsigned short AD_last;
extern volatile unsigned char clock_1s;
/* variable to trace in LogicAnalyzer (should not read to often) */
volatile unsigned short AD_dbg;