?? sample3.c
字號(hào):
/****************************************************************/
/* 項(xiàng)目名稱 : R8C/23 CAN/LIN Demo Board */
/* : 樣例程序3 */
/* : LIN主機(jī) */
/* 硬件環(huán)境 : R0K521237C000BB */
/* MCU型號(hào) : R5F21237JFP */
/* C編譯器 : NC30WA,版本5.30.r02及以上 */
/* 文件名 : Sample3.c */
/* 版本 : 1.0 */
/* 作者 : wangsy */
/* 修訂歷史 : */
/* 修訂者 時(shí)間 版本 說明 */
/* wangsy 2006/9/11 1.0 初版發(fā)行 */
/* */
/****************************************************************/
/* 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 // 時(shí)鐘穩(wěn)定延時(shí):1指令周期 * 255
/*------------------------------------------------------------
函數(shù)聲明
------------------------------------------------------------*/
void main(void);
void timerRB_10ms_config(void);
/*------------------------------------------------------------
函數(shù)定義
------------------------------------------------------------*/
/*------------------------------------------------------
名稱 : main
功能 : 主函數(shù)
入口 : 無(wú)
出口 : 無(wú)
調(diào)用 : 無(wú)
寄存器 : ALL
------------------------------------------------------*/
void main(void)
{
uchar8 ucI;
uchar8 lp_dlc;
uchar8 temp_event = NO;
asm("FCLR I"); // 關(guān)閉總中斷
/*--------------------------------------------------
時(shí)鐘初始化
----------------------------------------------------*/
// 切換主時(shí)鐘:外接晶體
prc0 = HOFF; // 寄存器寫保護(hù):禁用
cm02 = LEN; // 等待模式下時(shí)鐘 : On
cm05 = LON; // XIN 振蕩器輸入: On
cm06 = LON; // cm16/17: 使能
cm10 = LON; // 所有時(shí)鐘: On
cm13 = HON; // Xin-Xout引腳功能:外接晶體
cm14 = HON; // 片內(nèi)低速時(shí)鐘:運(yùn)行
cm15 = HON; // Xin-Xout驅(qū)動(dòng)能力:高
cm16 = 0; // 主時(shí)鐘分頻比:1
cm17 = 0;
ocd0 = HON; // 時(shí)鐘停止檢測(cè)功能:開啟
ocd1 = HON;
ocd2 = LON; // CPU時(shí)鐘源:XIN
fra01 = LOFF; // 內(nèi)部時(shí)鐘使能位: 關(guān)閉
fra00 = LOFF; // 片內(nèi)高速時(shí)鐘:禁用
prc0 = LON; // 寄存器寫保護(hù):?jiǎn)⒂?
/* 等待時(shí)鐘穩(wěn)定 */
ucI = 0;
while ( ucI < OSC_STABLE_TIME )
{
ucI++;
}
timerRB_10ms_config(); // timerRB 初始化
uart_init(); // UART初始化
timerRA_rcv_wakeup_config(); // timerRA接收wakeup信號(hào)初始化
asm("FSET I"); // 開啟中斷
while(1)
{
// 調(diào)用LIN狀態(tài)轉(zhuǎn)換函數(shù) 參數(shù)1:進(jìn)度表號(hào);參數(shù)2:外部事件
lin_sts_convert((uchar8)SCHEDULE_0,temp_event);
temp_event = NO;
if(lin_cmd != CMD_NO_COMMAND) // 如果沒有新的命令則狀態(tài)轉(zhuǎn)換不執(zhí)行
{
lin_sts = linM[lin_cmd][lin_sts];
lin_cmd = CMD_NO_COMMAND;
}
else
{
}
}
}
/*------------------------------------------------------
名稱 : timerRB_10ms_config
功能 : timerRB 10ms計(jì)數(shù)初始化
入口 : 無(wú)
出口 : 無(wú)
調(diào)用 : 無(wú)
寄存器 : timerRB相關(guān)
------------------------------------------------------*/
void timerRB_10ms_config(void)
{
trbic = TIMERRB_INT_PRIORITY; // timerRB中斷優(yōu)先級(jí)
tstop_trbcr = HEN; // 強(qiáng)制終止timerRB
while(tcstf_trbcr == HON)
{
}
trbioc = 0; // 定時(shí)器模式下,該寄存器為零
tmod1_trbmr = 0; // TMOD1-TMOD0: 00,定時(shí)器模式
tmod0_trbmr = 0;
twrc_trbmr = 0; // 同時(shí)寫 reload 寄存器和counter
tck1_trbmr = 0; // f8
tck0_trbmr = 1;
tckcut_trbmr = 0; // 提供時(shí)鐘源
//1/10ms = 20M/(8*125*200)
trbpre = 200 - 1;
trbpr = 125 - 1;
tstart_trbcr = HON; // 啟動(dòng)timerRB
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -