引用: dingzy_2002 发表于 2014-10-10 16:35
附件为OPS控制器项目说明(硬件篇)
R7F0C80212ESP 内部资源 | 资源使用信息 | code generator设置 | 完成功能 | ||
时钟/电源 | 内部时钟5MHz 电源电压:2.4V≤VDD≤5.5V | 同左 | 工作在宽电压范围下,5MHz系统时钟。 | ||
端口 | P0 | P0.0 | 强上拉输出 | Out+Output1 | 档位状态指示 |
P0.1 | 无上拉输入,作为AD转换引脚 | Unused | 档位信号AD输入 | ||
P0.2 | 强上拉输出 | Out+Output1 | 行驶电磁阀控制输出指示 | ||
P0.3 | 强上拉输出 | Out+Output1 | 警告指示 | ||
P0.4 | 强上拉输出 | Out+Output1 | 座椅开关断开指示 | ||
P4 | P4.0 | 编程调试数据引脚 | Unused | ||
P12 | P12.5 | 复位引脚 | RESET pin Used | ||
P13 | P13.7 | 输入引脚 | In | 座椅开关输入 | |
外部中断 | 未使用 | Unused | |||
按键及中断 | 未使用 | Unused | |||
看门狗 | 使用最大的溢出时间 关闭看门狗中断 | Overflow time:(216-1)/fil(4.369S) | |||
时钟/ 蜂鸣器输出 | 未使用 | Unused | |||
上电复位(SPOR) | 设置为2.7V | Reset generation level (VSPDR)=2.7V | |||
定时器阵列单元 | 通道0:间隔定时器,50ms中断 通道1:未使用 | Channel 0: ●interval timer ●Interval value:50ms ●INTTM00使能,高级别中断 Channel 1:Unused | ●第50MS运行一次AD转换,并根据AD结果进行相应的逻辑处理。 ●第250ms运行一次座椅信号检测处理逻辑运算以及警告信号处理。 | ||
串行阵列单元 | 未使用 | Unused | |||
A/D 转换器 | 使用通道0, 8位转换结果, 始终工作, 无中断 | ●Comparator operation setting:Operation ●Resolution seting:8bits ●A/D channel selection:ANI0 ●Conversion time mode:Normal1 ●Conversion time 84/fCLK |
函数名称 | 函数说明 | 函数文件 | 备注 |
void main(void) | 主函数 | r_cg_main.c | 由code generator生成,再添加相应的函数 |
void R_MAIN_UserInit(void) | 系统初始化 | ||
void hdwinit(void) | 硬件初始化 | r_cg_systeminit.c | 由code generator生成,不作修改 |
Void R_Systeminit(void) | 芯片内部功能模块初始化 | ||
void R_CGC_Get_ResetSource(void) | 时钟/复位初始化 | r_cg_cgc_user.c | |
void R_PORT_Create(void) | 管脚模块初始化 | r_cg_port.c | |
void R_CGC_Create(void) | 时钟/复位模块初始化 | r_cg_cgc.c | |
void R_WDT_Create(void) | WDT(看门狗)模块初始化 | r_cg_wdt.c | |
void R_TAU0_Create(void) | 定时器通道0模块初始化 | r_cg_tau.c | |
void R_TAU0_Channel0_Start(void) | 定时器通道0启动 | ||
void R_ADC_Create(void) | AD转换模块初始化 | r_cg_adc.c | |
void R_WDT_Restart(void) | WDT复位(清WDT)函数 | r_cg_wdt_user.c | |
(void)LOGIC_OPT(void) | 档位逻辑处理运算 | logic_opt.c | 重新建立的文件,添加用户函数 |
(void)Chair_OPT(void) | 座椅逻辑处理运算 | ||
(void)BELL_OPT(void) | 警告输出处理运算 | ||
__interrupt static void r_tau0_channel0_interrupt(void) | 定时器通道0中断 | r_cg_tau_user.c | 由code generator生成,再添加相应的函数 |
函数名: | void main(void) |
说明: | 主函数 |
输入: | 无 |
输出: | 无 |
完成功能: | 1.系统模块功能初始化 2.每50mS运行一次AD转换、逻辑运算函数:LOGIC_OPT() 3.每250mS运行一次: ●座椅检测、逻辑运算函数:Chair_OPT() ●警告输出运算函数:BELL_OPT() ●看门狗复位函数:R_WDT_Restart() |
函数名: | void R_MAIN_UserInit(void) |
说明: | 主体硬件初始化函数 |
输入: | 无 |
输出: | 无 |
完成功能: | 上电运行一次此函数,由void main(void)调用; 1.硬件模块初始化函数:hdwinit() 2.开启定时器通道0工作函数:R_TAU0_Channel0_Start(); 3.开中断。 |
函数名: | __interrupt static void r_tau0_channel0_interrupt(void) |
说明: | 定时器通道0间隔定时中断函数 |
输入: | 无 |
输出: | 无 |
完成功能: | 定时器通道0每50mS产生间隔中断函数; 1.设置50mS中断标志; 2.Timer_50ms_ADD累加、判断产生250mS中断标志。 |
函数名: | void LOGIC_OPT(void) |
说明: | AD转换,逻辑运算函数 |
输入: | 无 |
输出: | 无 |
完成功能: | 每50mS运行一次,由void main(void)调用; 1.对AD通道0进行8位结果转换,并与上次转换结果进行累加平均; 2.判断平均后的数据,≥7.5V电压输入时,档位状态指示灯熄灭;<6.5V电压输入时,档位状态指示灯显示,同时清除座椅锁定位; |
函数名: | void Chair_OPT(void) |
说明: | 座椅开关检测,逻辑运算及输出信号函数 |
输入: | 无 |
输出: | 无 |
完成功能: | 每250mS运行一次,由void main(void)调用; 根据座椅开关信号、座椅相关标志位进行座椅逻辑运算及输出信号函数。 完成本项目硬件篇所述的OPS逻辑功能: 1.座椅开关正常接通,座椅断开指示灯熄灭,初始化相应标志位及行驶电磁阀控制输出正常工作。 2.座椅开关断开持续2秒后,座椅断开指示灯亮,设置标志位Chair_ALARM; 3.座椅开关断开持续5秒后,行驶电磁阀控制输出指示灯熄灭,设置标志位Chair_LOCK、Chair_UP; 4.座椅开关断开持续5秒后再次接通,若档处于在档状态,则仍禁止行驶电磁阀控制输出,设置标志位GEAR_ALARM。 |
函数名: | void BELL_OPT(void) |
说明: | 根据相关警告位,设置警告信号运算并输出函数 |
输入: | 无 |
输出: | 无 |
完成功能: | 每250mS运行一次,由void main(void)调用; 根据Chair_ALARM、GEAR_ALARM及BELL_Runing标志位及输出计数寄存器BELL_Cont,完成警告信号状态运算并输出。 |