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

📄 sample3.c

📁 基于LPC76X的LIN开发通信源程序调试通过
💻 C
字号:
/****************************************************************/
/* 项目名称     : R8C/23 CAN/LIN Demo Board			            */
/*              : 样例程序3                                     */
/*              : LIN主机										*/
/* 硬件环境		: R0K521237C000BB								*/
/* MCU型号      : R5F21237JFP                                   */
/* C编译器		: NC30WA,版本5.30.r02及以上					*/
/* 文件名	    : Sample3.c                                     */
/* 版本			: 1.0                                           */
/* 作者			: wangsy                                        */
/* 修订历史     :                                               */
/*			修订者		时间		版本	说明				*/
/*			wangsy 		2006/9/11	1.0		初版发行			*/
/*																*/
/****************************************************************/
/*		Copyright, 2006 RENESAS TECHNOLOGY CORPORATION &        */
/*                      RENESAS SOLUTIONS CORPORATION			*/
/****************************************************************/

/*------------------------------------------------------------
					 包含头文件 		                                       
------------------------------------------------------------*/
#include "../inc/Comdef_r823.h"
#include "../inc/Isr.h"
#include "../inc/Lin_master.h"

#define	OSC_STABLE_TIME 255						// 时钟稳定延时:1指令周期 * 255
/*------------------------------------------------------------
					 函数声明 		                                       
------------------------------------------------------------*/
void main(void);
void timerRB_10ms_config(void);

/*------------------------------------------------------------
					 函数定义 		                                       
------------------------------------------------------------*/
/*------------------------------------------------------
  名称		: main
  功能		: 主函数
  入口		: 无
  出口		: 无
  调用		: 无
  寄存器	: ALL
------------------------------------------------------*/
void main(void)
{
	uchar8 	ucI;
	uchar8	lp_dlc;
	uchar8	temp_event = NO;

	asm("FCLR I");				// 关闭总中断

	/*--------------------------------------------------
						  时钟初始化					
	----------------------------------------------------*/
	// 切换主时钟:外接晶体 
	prc0 = HOFF;				// 寄存器写保护:禁用
	cm02 = LEN; 				// 等待模式下时钟 : On
	cm05 = LON; 				// XIN 振荡器输入: On
	cm06 = LON; 				// cm16/17: 使能
	cm10 = LON; 				// 所有时钟: On
	cm13 = HON; 				// Xin-Xout引脚功能:外接晶体
	cm14 = HON; 				// 片内低速时钟:运行
	cm15 = HON; 				// Xin-Xout驱动能力:高
	cm16 = 0;					// 主时钟分频比:1
	cm17 = 0;
	ocd0 = HON; 				// 时钟停止检测功能:开启
	ocd1 = HON;
	ocd2 = LON; 				// CPU时钟源:XIN
	fra01 = LOFF;				// 内部时钟使能位: 关闭
	fra00 = LOFF;				// 片内高速时钟:禁用
	prc0 = LON;					// 寄存器写保护:启用

	/* 等待时钟稳定	*/
	ucI = 0;
	while ( ucI < OSC_STABLE_TIME )
	{
		ucI++;
	}

	timerRB_10ms_config();			// timerRB 初始化
	uart_init();					// UART初始化
	timerRA_rcv_wakeup_config();	// timerRA接收wakeup信号初始化

	asm("FSET I");					// 开启中断

	while(1)
	{
		// 调用LIN状态转换函数 参数1:进度表号;参数2:外部事件
		lin_sts_convert((uchar8)SCHEDULE_0,temp_event);	
		temp_event = NO;
								
		if(lin_cmd != CMD_NO_COMMAND)			// 如果没有新的命令则状态转换不执行
		{
			lin_sts = linM[lin_cmd][lin_sts];
			lin_cmd = CMD_NO_COMMAND;
		}
		else
		{
		}
	}
}

/*------------------------------------------------------
  名称		: timerRB_10ms_config
  功能		: timerRB 10ms计数初始化
  入口		: 无
  出口		: 无
  调用		: 无
  寄存器	: timerRB相关
------------------------------------------------------*/
void timerRB_10ms_config(void)
{
	trbic = TIMERRB_INT_PRIORITY;	// timerRB中断优先级
	
	tstop_trbcr = HEN;				// 强制终止timerRB
	while(tcstf_trbcr == HON)
	{
	}

	trbioc = 0;						// 定时器模式下,该寄存器为零
	
	tmod1_trbmr = 0;				// TMOD1-TMOD0: 00,定时器模式
	tmod0_trbmr = 0;

	twrc_trbmr = 0;					// 同时写 reload 寄存器和counter

	tck1_trbmr = 0;					// f8
	tck0_trbmr = 1;
	
	tckcut_trbmr = 0;				// 提供时钟源

	//1/10ms = 20M/(8*125*200)
	trbpre = 200 - 1;
	trbpr = 125 - 1;
	
	tstart_trbcr = HON;				// 启动timerRB
}

⌨️ 快捷键说明

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