📄 44bmain.c
字号:
/*************************************************************************
* FILE NAME VERSION
*
* 44bmain.c 1.0
*
* COMPONENT
*
* Flash Operation such as erase/program
*
* DESCRIPTION
*
*
*
* DATA STRUCTURES
*
*
*
* FUNCTIONS
*
*
*
* DEPENDENCIES
*
*
* HISTORY
*
* Meter Chen 2001-7
*
************************************************************************/
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "..\inc\def.h"
#include "..\inc\29lvflash.h"
#include "..\inc\option.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
void __irq Eint4567Isr(void);
void ini_EINT4567(void);
void __irq Timer5_ISR(void);
void initial_time5(void);
int main(void)
{
/**** SYSTEM INITIALIZE */
/* disable system cache */
rSYSCFG = 0;
//__rt_lib_init();
Port_Init();
/**** FLASH OPERATION */
/* 1 - get flash'ID, if it work well, at least our hardware is good */
// Flash_ReadID();
/* 2 - erase the whole chip, also you can erase it sector by sector */
// Flash_Erase_Chip();
/* 3 - write into flash from a temporary buffer */
/* the buffer base is 0xc100000, the image length is 1000000, you can change these */
// Flash_Write(0, (char *)0xc100000, 100000);
/**** PROGRAM OVER */
// rI_ISPC=0xFFFFFFFF; /* clear all interrupt pend */
initial_time5();
ini_EINT4567();
while(1)
{
Led_Off(3);
Delay(1000);
Led_On(3);
Delay(1000);
// key=Key_Scan();
/* switch(key)
{
case 3:Led_On(1);Delay(200);Led_Off(1);break;
case 4:Led_On(2);Delay(200);Led_Off(2);break;
case 5:Led_On(3);Delay(200);Led_Off(3);break;
case 6:Led_On(1);Led_On(2);Led_On(3);Delay(200);Led_Off(1);Led_Off(2);Led_Off(3);break;
default:continue;
}*/
}
}
void __irq Eint4567Isr(void)
{
static unsigned int t = 0;
//char key;
unsigned char whichInt;
whichInt = rEXTINTPND;
/* key = Key_Scan();
switch(key)
{
case 3:Led_On(1);break;
case 4:Led_On(2);break;
case 5:Led_On(3);break;
case 6:Led_Off(1);Led_Off(2);Led_Off(3);break;
default:;
}
*/
rI_ISPC = BIT_EINT4567; //pengsl,清除中断位;
rEXTINTPND = 0xf;
++t;
if(t % 2 == 0)
{
Led_Off(2);
}
else
{
Led_On(2);
}
}
void ini_EINT4567(void)
{
pISR_EINT4567=(unsigned)Eint4567Isr; //pengsl,设置外部中断入口;
rINTMOD=0x0; //中断模式:0:IRQ模式
rINTCON=0x5; //非向量中断,IRQ使能 0x05:非向量中断;0x01:向量中断
rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); //pengsl,开中断(务必最后开中断);
//PortG的相关配置见Port_Init();
rI_ISPC=BIT_EINT4567; //pengsl,清除中断位;
rEXTINTPND = 0xf;
}
void __irq Timer5_ISR(void) //中断服务程序
{
// Uart_Printf("\nTimer5 start!");
static unsigned int t = 0;
rI_ISPC=BIT_TIMER5;//向里写入1,从而使对应的INTPND中的位清0
++t;
if(t % 2 == 0)
{
Led_Off(1);
}
else
{
Led_On(1);
}
//Led_On(1);Led_On(2);Led_On(3);
}
void initial_time5(void)
{
rINTMSK=~(BIT_TIMER5 | BIT_GLOBAL); //将全局中断打开,并且将定时器0打开
rINTCON=0x5; //Non-vectored,IRQ enable,FIQ disable
rINTMOD=0x0; //All=IRQ mode
pISR_TIMER5=(unsigned)Timer5_ISR; //中断入口地址赋值
rTCFG0=0x00ff0000;//定时器5预分频值设置为255 MCLK=64M
rTCFG1=0x00300000;//定时器5分割值设置为16
rTCNTB5=65535/4; //约1s中断周期
rTCON=0x06000000; // 打开手动更新
rTCON=0x05000000; //关闭手动更新,1001 自动重载,并启动定时器0
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -