?? hd_support.c
字號:
/***********************************************************
* 函數庫說明:底層硬件初始化函數庫 *
* 版本: *
* 作者: *
* 創建日期: *
* -------------------------------------------------------- *
* [硬件說明] *
* 處理器: *
* 系統時鐘: *
* -------------------------------------------------------- *
* [支 持 庫] *
* 支持庫名稱:HD_Support.h *
* 需要版本: ----- *
* 支持庫說明:底層硬件初始化聲明庫 *
* *
* 支持庫名稱:PF_Config.h *
* 需要版本: ----- *
* 支持庫說明:硬件平臺配置聲明庫 *
* -------------------------------------------------------- *
* [版本更新] *
* 修改: *
* 修改日期: *
* 版本: *
* -------------------------------------------------------- *
* [版本歷史] *
* -------------------------------------------------------- *
* [使用說明] *
***********************************************************/
/********************
* 頭 文 件 配 置 區 *
********************/
# include "PF_Config.h"
# include "HD_Support.h"
/********************
* 系 統 宏 定 義 *
********************/
# pragma interrupt_handler Timer0_OVF_ISR:iv_TIMER0_OVF
# pragma interrupt_handler INT0_ISR:iv_INT0
# pragma interrupt_handler INT1_ISR:iv_INT1
# pragma interrupt_handler PCINT0_ISR:iv_PCINT0
# pragma interrupt_handler PCINT1_ISR:iv_PCINT1
# pragma interrupt_handler SPI_STC_ISR:iv_SPI_STC
/*------------------*
* 常 數 宏 定 義 *
*------------------*/
/*------------------*
* 動 作 宏 定 義 *
*------------------*/
#ifndef INSERT_TIMER0_OVF_ISR_CODE
# define INSERT_TIMER0_OVF_ISR_CODE
#endif
#ifndef INSERT_INT0_ISR_CODE
# define INSERT_INT0_ISR_CODE
#endif
#ifndef INSERT_INT1_ISR_CODE
# define INSERT_INT1_ISR_CODE
#endif
#ifndef INSERT_PCINT0_ISR_CODE
# define INSERT_PCINT0_ISR_CODE
#endif
#ifndef INSERT_PCINT1_ISR_CODE
# define INSERT_PCINT1_ISR_CODE
#endif
#ifndef INSERT_SPI_STC_ISR_CODE
# define INSERT_SPI_STC_ISR_CODE
#endif
/********************
* 模塊結構體定義區 *
********************/
/********************
* 函 數 聲 明 區 *
********************/
void Device_INIT(void);
/********************
* 模塊函數聲明區 *
********************/
static void Port_INIT(void);
static void Timer0_INIT(void);
static void Extend_INT_INIT(void);
static void SPI_INIT(void);
/********************
* 模塊變量聲明區 *
********************/
/********************
* 全局變量聲明區 *
********************/
/***********************************************************
* 函數說明:系統硬件初始化函數 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:Port_INIT() Timer0_INIT() *
***********************************************************/
void Device_INIT(void)
{
Port_INIT();
Timer0_INIT();
SPI_INIT();
Extend_INT_INIT();
TIMSK0 = BIT(TOIE0); //啟動定時期0溢出中斷資源
}
/***********************************************************
* 函數說明:系統端口初始化函數 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:無 *
***********************************************************/
static void Port_INIT(void)
{
//LCDSP027
DDR_PD1 = PDIR_OUT;_PD1 = HIGH;
DDR_PD0 = PDIR_OUT;_PD0 = HIGH;
//外部中斷
DDR_PD2 = PDIR_IN; _PD2 = HIGH; //開啟上拉電阻
DDR_PC3 = PDIR_IN; _PC3 = HIGH; //開啟上拉電阻
DDR_PD3 = PDIR_IN; _PD3 = HIGH; //開啟上拉電阻
DDR_PB0 = PDIR_IN; _PB0 = HIGH; //開啟上拉電阻
//SPI初始化
DDRB |= BIT(PB5)|BIT(PB3)|BIT(PB2);
PORTB |= BIT(PB2);
}
/***********************************************************
* 函數說明:外中斷初始化函數 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:無 *
***********************************************************/
static void Extend_INT_INIT(void)
{
//INT0 INT1
EICRA = BIT(ISC10)|BIT(ISC00); //任意電平變化
EIMSK = BIT(INT1)|BIT(INT0); //中斷使能
//Pin Change Int
PCICR = BIT(PCIE0)|BIT(PCIE1);
PCMSK1 = BIT(PCINT11);
PCMSK0 = BIT(PCINT0);
}
/***********************************************************
* 函數說明:INT0中斷處理程序 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:INSERT_INT0_ISR_CODE *
***********************************************************/
void INT0_ISR(void)
{
INSERT_INT0_ISR_CODE
}
/***********************************************************
* 函數說明:INT1中斷處理程序 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:INSERT_INT1_ISR_CODE *
***********************************************************/
void INT1_ISR(void)
{
INSERT_INT1_ISR_CODE
}
/***********************************************************
* 函數說明:PCINT1中斷處理程序 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:INSERT_PCINT1_ISR_CODE *
***********************************************************/
void PCINT1_ISR(void)
{
INSERT_PCINT1_ISR_CODE
}
/***********************************************************
* 函數說明:PCINT0中斷處理程序 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:INSERT_PCINT0_ISR_CODE *
***********************************************************/
void PCINT0_ISR(void)
{
INSERT_PCINT0_ISR_CODE
}
/***********************************************************
* 函數聲明:定時器0初始化函數 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:無 *
***********************************************************/
static void Timer0_INIT(void)
{
TCCR0B = 0x00; //stop
TCNT0 = 0x06; //set count
TCCR0A = 0x00;
TCCR0B = 0x03; //start timer
}
/***********************************************************
* 函數聲明:定時器0溢出中斷處理程序 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:INSERT_TIMER0_OVF_ISR_CODE *
***********************************************************/
void Timer0_OVF_ISR(void)
{
TCNT0 = 0x06;
INSERT_TIMER0_OVF_ISR_CODE
}
/***********************************************************
* 函數說明:SPI初始化函數 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:無 *
***********************************************************/
static void SPI_INIT(void)
{
SPCR = 0xFE; //setup SPI
SPSR = 0x00; //setup SPI
}
/***********************************************************
* 函數說明:SPI發送完成中斷 *
* 輸入: 無 *
* 輸出: 無 *
* 調用函數:INSERT_SPI_STC_ISR_CODE *
***********************************************************/
void SPI_STC_ISR(void)
{
INSERT_SPI_STC_ISR_CODE
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -