📄 wdt_port_clk_init.c
字号:
/*------------------------------------------------------------------------------
;CAN总线大坝监测系统
;底层节点
;文件名称: wdt_port_clk_init.c
;函数功能:看门狗,时钟,交叉开关,IO口初始化
;MCU支持: C8051F040
;上海富方软件合肥自动化分公司
;-----------------------------------------------------------------------------*/
#include "c8051F040.h"
#include "wdt_port_clk_init.h"
////////////////////////////////////////////////////////////////////////////////
// 看门狗关闭,之前最好关中断
////////////////////////////////////////////////////////////////////////////////
void Watchdog_Close (void){
/* 0xFF锁住禁止功能,WDT超时间隔为4^(3+WDTCN[2-0])*Tsysclk */
/* 复位后默认开启且为最大超时间隔,复位不影响/RST引脚 */
/* 0xA5使能和重载看门狗定时器,在4个系统周期内写入0xDE和0xAD */
WDTCN = 0xDE;
WDTCN = 0xAD;
}
////////////////////////////////////////////////////////////////////////////////
// 交叉开关配置,I/O口配置
////////////////////////////////////////////////////////////////////////////////
void Port_Config (void){
SFRPAGE_SAVE = SFRPAGE;
/* 交叉开关配置 */
SFRPAGE = CONFIG_PAGE;
XBR3 = 0x80; // CAN发送脚 CTX (B7)为推挽模式,距离大建议为开漏模式
SFRPAGE = SFRPAGE_SAVE;
}
////////////////////////////////////////////////////////////////////////////////
// 时钟初始化,使用外部11.0592MHz晶振作为时钟源
////////////////////////////////////////////////////////////////////////////////
void Sysclk_Init (void){
int n;
SFRPAGE_SAVE = SFRPAGE;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x77; // 0x7x外部晶振2分频,0x6x外部晶振不分频;XFCN = 111, 10-30Mhz, XFCN = 110, 4-10Mhz;
for (n=0;n<255;n++); // 等待1ms以上
while ((OSCXCN & 0x80) == 0); // B7为1表示外部晶振稳定运行
CLKSEL |= 0x01; // 选择外部时钟
OSCICN = 0x00; // 内部晶振禁止
SFRPAGE = SFRPAGE_SAVE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -