📄 dm642main.c
字号:
/********************************************************************/
/* Copyright 2004 by SSD Incorporated. */
/* All rights reserved. Property of SEED Incorporated. */
/* Restricted rights to use, duplicate or disclose this code are */
/* granted through contract. */
/* */
/********************************************************************/
/*
*---------dm642main.c---------
* This example uses a timer to read and write the ESAM.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <csl.h>
#include <std.h>
#include <csl_irq.h>
#include <csl_chip.h>
#include <csl_timer.h>
#include <csl_gpio.h>
#include "dm642.h"
#include "rtciic.h"
#include "eeprom.h"
#include "io&led.h"
#include "dm642_ide.h"
#include "dm642_flash.h"
#include "dm642_uart.h"
#define PRDValue0 0x00F70E0
extern far void vectors();
static GPIO_Handle hGpio;
Uint32 flag0=0;
TIMER_Handle hTimer0;
Uint32 TimerEventid;
//定时器配置系数结构体
TIMER_Config MyConfig0=
{
0x00000205,//CTL
PRDValue0,//PRD
0x00000000,//CNT
};
//定时器0中断处理函数
interrupt void timer0(void)
{
flag0+=1;
if(flag0>=16)
flag0=0;
if(flag0>=8)
{
GPIO_pinWrite(hGpio,GPIO_PIN15,0);
}
else
{
GPIO_pinWrite(hGpio,GPIO_PIN15,1);
}
}
//****************************主函数*****************************************************
void main()
{
/*-------------------------------------------------------*/
/* perform all initializations */
/*-------------------------------------------------------*/
DM642_init();
CSL_init();//初始化CSL
//打开定时器0
hTimer0 =TIMER_open(TIMER_DEV0,0);
//获取定时器0的事件号
TimerEventid=TIMER_getEventId(hTimer0);
/*----------------------------------------------------------*/
/*中断向量表的初始化*/
IRQ_globalDisable();
//Point to the IRQ vector table
IRQ_setVecs(vectors);
//time0
IRQ_nmiEnable();
IRQ_globalEnable();
IRQ_map(TimerEventid,14);
IRQ_reset(TimerEventid);
IRQ_enable(TimerEventid);
/*----------------------------------------------------------*/
TIMER_config(hTimer0,&MyConfig0);//对定时器0配置
hGpio = GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);
GPIO_reset(hGpio);
//GPIO_config(hGpio,&MyGPIOCfg);
GPIO_pinEnable(hGpio,GPIO_PIN15);
GPIO_pinEnable(hGpio,GPIO_PIN4);
GPIO_pinEnable(hGpio,GPIO_PIN5);
GPIO_pinEnable(hGpio,GPIO_PIN6);
GPIO_pinEnable(hGpio,GPIO_PIN7);
GPIO_pinDirection(hGpio,GPIO_PIN15,GPIO_OUTPUT);
GPIO_pinDirection(hGpio,GPIO_PIN4,GPIO_OUTPUT);
GPIO_pinDirection(hGpio,GPIO_PIN5,GPIO_OUTPUT);
GPIO_pinDirection(hGpio,GPIO_PIN6,GPIO_OUTPUT);
GPIO_pinDirection(hGpio,GPIO_PIN7,GPIO_OUTPUT);
//定时器开始运行
TIMER_start(hTimer0);
// TIMER_close(hTimer0);
while(1)
{
GPIO_pinWrite(hGpio,GPIO_PIN4,0);
DM642_waitusec(0x20000);
GPIO_pinWrite(hGpio,GPIO_PIN4,1);
DM642_waitusec(0x20000);
GPIO_pinWrite(hGpio,GPIO_PIN5,0);
DM642_waitusec(0x20000);
GPIO_pinWrite(hGpio,GPIO_PIN5,1);
DM642_waitusec(0x20000);
GPIO_pinWrite(hGpio,GPIO_PIN6,0);
DM642_waitusec(0x20000);
GPIO_pinWrite(hGpio,GPIO_PIN6,1);
DM642_waitusec(0x20000);
GPIO_pinWrite(hGpio,GPIO_PIN7,0);
DM642_waitusec(0x20000);
GPIO_pinWrite(hGpio,GPIO_PIN7,1);
DM642_waitusec(0x20000);
//这个程序是控制了GPIO15,GPIO4-7的高低电平,其他的参考类似操作就可以了
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -