?? sample4.c
字號:
/****************************************************************/
/* 項目名稱 : R8C/23 CAN/LIN Demo Board */
/* : 樣例程序4 */
/* : LIN從機 */
/* 硬件環(huán)境 : R0K521237C000BB */
/* MCU型號 : R5F21237JFP */
/* C編譯器 : NC30WA,版本5.30.r02及以上 */
/* 文件名 : Sample4.c */
/* 版本 : 1.0 */
/* 作者 : wangsy */
/* 修訂歷史 : */
/* 修訂者 時間 版本 說明 */
/* wangsy 2006/9/11 1.0 初版發(fā)行 */
/* */
/****************************************************************/
/* Copyright, 2006 RENESAS TECHNOLOGY CORPORATION & */
/* RENESAS SOLUTIONS CORPORATION */
/****************************************************************/
/*------------------------------------------------------------
包含頭文件
------------------------------------------------------------*/
#include "../inc/Comdef_r823.h"
#include "../inc/lin_slave.h"
#include "../inc/Isr.h"
#define OSC_STABLE_TIME 255 // 時鐘穩(wěn)定延時:1指令周期 * 255
/*------------------------------------------------------------
函數(shù)聲明
------------------------------------------------------------*/
void main(void);
void timerRB_10ms_config(void);
/*------------------------------------------------------------
函數(shù)定義
------------------------------------------------------------*/
/*------------------------------------------------------
名稱 : main
功能 : 主函數(shù)
入口 : 無
出口 : 無
調用 : 無
寄存器 : all
------------------------------------------------------*/
void main(void)
{
uchar8 ucI;
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; // 寄存器寫保護:啟用
/* 等待時鐘穩(wěn)定 */
ucI = 0;
while ( ucI < OSC_STABLE_TIME )
{
ucI++;
}
timerRB_10ms_config(); // timerRB 初始化
timerRB_10ms_counter = 0; // 10s計數(shù)器清零
timerRA_rcv_break_config(); // timerRA接收break信號初始化
asm("FSET I"); // 開啟總中斷
while(1)
{
lin_sts_convert(temp_event); // 調用LIN狀態(tài)轉換函數(shù)
temp_event = NO;
if(lin_cmd != CMD_NO_COMMAND) // 如果沒有新的命令則狀態(tài)轉換不執(zhí)行
{
lin_sts = linM[lin_cmd][lin_sts];
lin_cmd = CMD_NO_COMMAND;
}
else
{
}
}
}
/*------------------------------------------------------
名稱 : timerRB_10ms_config
功能 : timerRB 10ms計數(shù)初始化
入口 : 無
出口 : 無
調用 : 無
寄存器 : timerRB相關
------------------------------------------------------*/
void timerRB_10ms_config(void)
{
trbic = TIMERRB_INT_PRIORITY; // timerRB中斷優(yōu)先級
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 + -