⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time_16_count.c

📁 EasyARM615的KEIL下的调试程序,包含IO口,串口,SPI口等
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: time_16_count.c
** Last modified Date: 2007-04-25 
** Last Version: v1.0
** Description: Stellaris系列单片机定时器0库函数的操作
** 				使用定时器实现输入边沿计数并产生中断
**------------------------------------------------------------------------------------------------------
** Created By: Pan Yi Fei
** Created date: 2007-04-25 
** Version: v1.0
** Descriptions: KEY1输入边沿,由定时器递减计数,
**               当计数值和匹配值相等时,进入中断:LED1的状态翻转。
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#include "hw_memmap.h"
#include "hw_types.h"
#include "hw_ints.h"
#include "gpio.h"
#include "sysctl.h"
#include "systick.h"
#include "timer.h"
#include "interrupt.h"

#define KEY1 GPIO_PIN_4				//定义KEY1 :PD4
#define LED1 GPIO_PIN_7				//定义LED1 :PD7

void Timer0A_ISR (void)
{
    TimerIntClear(TIMER0_BASE, TIMER_CAPA_MATCH);    	// 清除定时器0中断。
    TimerLoadSet(TIMER0_BASE, TIMER_A, 10);  	        // 重装定时器装载值为10
	GPIOPinWrite(GPIO_PORTD_BASE, LED1,GPIOPinRead(GPIO_PORTD_BASE, LED1) ^ LED1);
                                                        // 翻转GPIO PD7 端口。
    TimerEnable(TIMER0_BASE, TIMER_A);                 	// 使能定时器0。
}


int  main(void)
{
    SysCtlClockSet( SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                  SYSCTL_XTAL_6MHZ );                 		// 设定晶振为时钟源。
    SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 );       	// 使能定时器0外设。
	SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOD );       	// 使能GPIO D口外设。
	IntMasterEnable();                                    	// 处理器使能。

    GPIOPinTypeTimer( GPIO_PORTD_BASE,KEY1);		 		//设置PD4为CCP0功能输入口 
    GPIODirModeSet(GPIO_PORTD_BASE, LED1,GPIO_DIR_MODE_OUT);
                                                        	// 设置 GPIO PD4为输出口。
    GPIOPinWrite( GPIO_PORTD_BASE, LED1, ~LED1 );      		// 点亮LED1 
    TimerConfigure(TIMER0_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_CAP_COUNT); 
 	// 设置定时器0为16位定时器配置,边沿计数捕获模式 
    TimerControlEvent(TIMER0_BASE,TIMER_A,TIMER_EVENT_NEG_EDGE);	//设置为下降沿捕获 
    TimerLoadSet(TIMER0_BASE, TIMER_A, 10);  	         	// 设置定时器装载值为10
    TimerMatchSet(TIMER0_BASE,TIMER_A, 6);		 			// 设置定时器匹配值为6
    TimerIntEnable(TIMER0_BASE, TIMER_CAPA_MATCH);   		// GPTM捕获B的匹配中断使能
    TimerEnable(TIMER0_BASE, TIMER_A);						// 使能定时器并开始等待边沿事件
    IntEnable(INT_TIMER0A);									// 使能定时器0
    while(1);												// 等待中断
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -