📄 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);
}
/***********************************************************
* 函数说明:外中断初始化函数 *
* 输入: 无 *
* 输出: 无 *
* 调用函数:无 *
***********************************************************/
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 + -