📄 main.c
字号:
/****************************************Copyright (c)***************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: Li Baihua
** Modified date: 2008-04-09
** Version: 1.1
** Descriptions: 定时器0匹配产生中断实验
**
*********************************************************************************************************/
#include "config.h"
#define LED (1 << 17)
/*********************************************************************************************************
** Function name: Timer0_ISR
** Descriptions: 定时器0中断主程序
** input parameters: 无
** ouput parameters: 无
** Returned value: 无
*********************************************************************************************************/
void __irq Timer0ISR (void)
{
if ((IO0PIN & LED) == 0) {
IO0SET = LED; /* 点亮发光二极管 */
}
else IO0CLR = LED; /* 熄灭发光二极管 */
T0IR = 0x01; /* 清除中断标志 */
VICVectAddr = 0x00; /* 中断向量结束 */
}
/*********************************************************************************************************
** Function name: Timer0Init
** Descriptions: 定时器0初始化
** input parameters: 无
** ouput parameters: 无
** Returned value: 无
*********************************************************************************************************/
void Timer0Init(void)
{
T0TCR = 0x02; /* 定时器0复位 */
T0PR = 0; /* 不设时钟分频 */
T0MCR = 0x03; /* 匹配后复位TC,并产生中断 */
T0MR0 = Fpclk / 2; /* 设置0.5秒匹配值 */
T0IR = 0x01; /* 清除中断标志 */
T0TCR = 0x01; /* 启动定时器0 */
}
/*********************************************************************************************************
** Function name: main
** Descriptions: 定时器0匹配产生中断
** input parameters: 无
** ouput parameters: 无
** Returned value: 无
*********************************************************************************************************/
int main (void)
{
PINSEL1 = PINSEL1 & 0xFFFFFFF3; /* 选择P0.17的GPIO功能 */
IO0DIR = LED; /* 设置P0.17为输出 */
IO0SET = LED; /* 设置输出高电平 */
Timer0Init(); /* 定时器0初始化 */
IRQEnable(); /* IRQ中断使能 */
/*
* 设置向量中断控制器
*/
VICIntSelect = VICIntSelect & (~(1 << 4)); /* 定时器0分配为IRQ中断 */
VICVectCntl0 = 0x20 | 4; /* 定时器0分配为向量IRQ通道0 */
VICVectAddr0 = (uint32) Timer0ISR; /* 分配中断服务程序地址 */
VICIntEnable = 1 << 4; /* 定时器0中断使能 */
while(1);
return 0;
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -