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

📄 fun.c

📁 uc/os运行在tms320lf2407a上
💻 C
字号:

#include "global.c"

void KickDog(); 
void OSTickInit();
void SystemInit(); 
void vInitSpiBus();

void SystemInit() 
{   
	asm(" SETC	INTM ");	/* 关闭总中断 */
	asm(" CLRC  SXM  ");	/* 禁止符号位扩展 */ 
	asm(" CLRC  CNF  ");    /* B0块映射为 on-chip DARAM*/
	asm(" CLRC  OVM  ");    /* 累加器结果正常溢出*/
	SCSR1=0x83FE;   		/* 打开ADC,EVA,EVB,CAN和SCI的时钟,系统时钟CLKOUT=40M */
	WDCR=0x006F;			/* 禁止看门狗,看门狗时钟64分频 */ 
	KickDog();    			/* 初始化看门狗 */
    IFR=0xFFFF;				/* 清除中断标志 */	
  //  XINT2CR=0001;            /*高优先级,下降沿有效*/ 
	IMR=0x0003;				/* 打开中断1,2*/
	IFR=0xFFFF;				/* 清除中断标志 */
}
/****************************************************************************
 *
 * NAME: vInitSpiBus
 *
 ****************************************************************************/
void vInitSpiBus()
{
    /* Set SPI master to use auto slave select at 4MHz */
    MCRB=MCRB | 0x0014;     //SPISIMO,SPICLK特殊功能方式 
	SPICCR=0x0047;
    SPICTL=0x0006;          //禁止中断
    SPIBRR=0x0004;          	//4M波特率,40M/10=4M
    SPICCR=SPICCR | 0x80;   
}

void OSTickInit()           /*定时器1作为系统的时钟节拍*/
{
    EVAIMRA=0x0080;			/*  定时器1周期中断使能 */
    EVAIFRA=0xFFFF;			/*  清除中断标志 */
    GPTCONA=0x0000;
/*GPTCONA     
 bit 15        0:      reserved
 bit 14        0:      T2STAT, read-only
 bit 13        0:      T1STAT, read-only
 bit 12-11     00:     reserved
 bit 10-9      00:     T2TOADC, 00 = no timer2 event starts ADC 
 bit 8-7       10:     T1TOADC, 10 = timer1  periodic interrupt event starts ADC
 bit 6         0:      TCOMPOE, 0 = Hi-z all timer compare outputs
 bit 5-4       00:     reserved
 bit 3-2       00:     T2PIN, 00 = forced low
 bit 1-0       00:     T1PIN, 00 = forced low
*/

	T1PR=40000;			/*  定时器1初值,定时1ms */			
	T1CNT=0x0000;
	T1CON=0x104C;           /*  连续增计数模式 16M/16=1M*/	
	  

}
void KickDog()				/*踢除看门狗 */
{
	WDKEY=0x5555;
	WDKEY=0xAAAA;
}  


// AD初始化子程序
void  ADINIT()
{
   T4CNT=0X0000;	// T4计数器清0
   T4CON=0X104C;	// T4为连续增计数模式,128分频,且选用内部时钟源
   T4PR=12500;		// 设置T4的周期寄存器
   GPTCONB=0X400;	// T4周期中断标志触发AD转换
   EVBIMRB=0x0000;			/*  定时器4周期中断 */
   EVBIFRB=0X0FFFF;	// 清除EVB中断标志,写"1"清0
   ADCTRL1=0X10;	// 采样时间窗口预定标位ACQ PS3-ACQ PS0为0,
		// 转换时间预定标位CPS为0,AD为启动/停止模式,排
		// 序器为级连工作方式,且禁止特殊的两种工作模式
   ADCTRL2=0X8404;	// 可以用EVB的一个事件信号触发AD转换,
	// 且用中断模式1
   MAXCONV=0X0F;	// 16通道
   CHSELSEQ1=0X3210;
   CHSELSEQ2=0X7654;
   CHSELSEQ3=0X0BA98;
   CHSELSEQ4=0X0FEDC;	// 转换通道是0-15  
}

// 启动AD转换子程序(通过启动定时器4的方式间接启动)
void  ADSOC()
{
   T4CON=T4CON|0X40;	// 启动定时器4
}

void ADEOC()
{
	T4CON = T4CON&0X0FFBF;	//STOP T4
}

⌨️ 快捷键说明

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