IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> [嵌入式系统开发]利用系统节拍定时器实现LED灯闪烁详细教程及完整代码 -> 正文阅读

[嵌入式][嵌入式系统开发]利用系统节拍定时器实现LED灯闪烁详细教程及完整代码

? ? ? 🔥《嵌入式系统开发》系列专栏主要以LPC1100系列微控制器为硬件平台,详细介绍Cortex—-M0微控制器的原理与开发技术,基于keil仿真软件平台设计最小应用系统板和具有在板仿真器的口袋开发板以及相关例程。

? ? ? 🔥本文已收录于嵌入式系统开发系列专栏:嵌入式系统开发 欢迎订阅,持续更新。

? ? ??[嵌入式系统开发]利用系统节拍定时器实现LED灯闪烁详细教程及完整代码

本文目录

? ? ?1.要求

参考子程序:

1.1初始化:

1.2LED灯状态翻转:

? ? ? 2.完整代码

2.1主程序

2.2SysTick中断服务子程序

2.3Blinky.c文件

2.4IRQ.c文件

? ? ?3.编译通过图片

? ? ? 4. 调试运行结果的图片

4.1LED 灭

4.2LED亮

4.3波形图

? ? ? ?5.总结


? ? ?1.要求

? ? ? ?在Keil MDK 4.74上编写一段程序,利用系统节拍定时器SysTick实现定时1s,控制LPC1114微控制器的GPIO引脚PIO1_9状态反转(BLINKY指示灯闪烁,周期为2s),比较一下与Delay_1s()函数实现1s的定时的异同点,尝试用不同的方法(改变中断次数或者每次中断的时间)改变LED灯闪烁的频率,观察LED灯的闪烁情况。

参考子程序:

1.1初始化:

void LED_Init(void) {

LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 6); /*enable clock for GPIO*/

LPC_GPIO1->DIR |= (1UL << 9); /*configure GPIO1_9 as output*/

}

1.2LED灯状态翻转:

void LED_Toggle(void) {

LPC_GPIO1->DATA  ^=  (1UL <<9); /* Toggle the  BLINKY LED */

}

? ? ? 2.完整代码

2.1主程序

/*----------------------------------------------------------------------------
  MAIN function
 *----------------------------------------------------------------------------*/
int main (void) {                               /* 主程序               */
  SysTick_Config(SystemCoreClock/100);          /* 定时10ms */
  LED_Init();                                   /* LED初始化        */
  while (1) {                                   /*循环              */
          if(clock_1s){                          /*判断*/
			clock_1s = 0;                       /*标志*/
			LED_Toggle();                      /*状态翻转*/
		}
  }
}

2.2SysTick中断服务子程序

void SysTick_Handler (void) {           /*定义中断函数的入口地址·*/
  static unsigned long ticks;	            /*定义变量*/
 if (ticks++ >= 99) {                  /* 定时10ms循环100次   */
    ticks    = 0;
    clock_1s = 1;                       /*设置标志 */
  }
}

2.3Blinky.c文件

/*Blinky.c文件*/
#include "LPC11xx.h"                            /* LPC11xx definitions        */
extern volatile unsigned char  clock_1s;
	
void SysTick_Handler (void) {           /*定义中断函数的入口地址·*/
  static unsigned long ticks;	
	  if (ticks++ >= 99) {                  /* Set Clock1s to 1 every 1 second 定时10ms循环100次   */
    ticks    = 0;
    clock_1s = 1;                       /*设置标志 */
  }
}

void LED_Init(void) {
LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 6); /*enable clock for GPIO*/
LPC_GPIO1->DIR |= (1UL << 9); /*configure GPIO1_9 as output*/
}

void LED_Toggle(void) {
LPC_GPIO1->DATA  ^=  (1UL <<9); /* Toggle the  BLINKY LED */
}
/*----------------------------------------------------------------------------
  MAIN function
 *----------------------------------------------------------------------------*/
int main (void) {                               /* Main Program               */
  SysTick_Config(SystemCoreClock/100);          /* Generate IRQ each ~10 ms  
	                                                 定时10ms */
  LED_Init();                                   /* LED Initialization         */
  while (1) {                                   /* Loop forever               */
          if(clock_1s){
			clock_1s = 0;                       /*标志*/
			LED_Toggle();
		}
  }
}

2.4IRQ.c文件

/*----------------------------------------------------------------------------
 * Name:    IRQ.C
 * Purpose: IRQ Handler
 * Note(s):
 *----------------------------------------------------------------------------
 * This file is part of the uVision/ARM development tools.
 * This software may only be used under the terms of a valid, current,
 * end user licence from KEIL for a compatible version of KEIL software
 * development tools. Nothing else gives you the right to use this software.
 *
 * This software is supplied "AS IS" without warranties of any kind.
 *
 * Copyright (c) 2010 Keil - An ARM Company. All rights reserved.
 *----------------------------------------------------------------------------*/

#include "LPC11xx.h"                    /* LPC11xx definitions                */


volatile unsigned short AD_last;        /* Last converted value               */
volatile unsigned char  clock_1s;       /* Flag activated each second         */

/* Import function for turning LEDs on or off                                 */
extern void LED_Out (unsigned int num);

/*----------------------------------------------------------------------------
  A/D IRQ: Executed when A/D Conversion is done 
 *----------------------------------------------------------------------------*/
void ADC_IRQHandler(void) {
  unsigned int ADC_reg;

  ADC_reg = LPC_ADC->STAT;              /* Read ADC status clears interrupt   */

  ADC_reg = LPC_ADC->GDR;               /* Read conversion result             */
  AD_last = (ADC_reg >> 6) & 0x3FF;     /* Store converted value              */
}

? ? ?3.编译通过图片

? ? ? 4. 调试运行结果的图片

4.1LED 灭

2b5444a0379b46c2ac77ab2ad006626c.png

4.2LED亮

?de9f16a3e059418e9bda545917334e52.png

4.3波形图

? ? ? ?5.总结

? ? ? ?此实验利用系统节拍定时器SysTick实现定时1s,控制LPC1114微控制器的GPIO引脚PIO1_9状态反转(BLINKY指示灯闪烁,周期为2s)如此一直循环,实现LED灯闪烁

? ? ? 🔥《嵌入式系统开发》系列专栏主要以LPC1100系列微控制器为硬件平台,详细介绍Cortex—-M0微控制器的原理与开发技术,基于keil仿真软件平台设计最小应用系统板和具有在板仿真器的口袋开发板以及相关例程。

? ? ? 🔥本文已收录于嵌入式系统开发系列专栏:嵌入式系统开发 欢迎订阅,持续更新。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:33:13  更:2022-09-13 11:38:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 17:33:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计