完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在写了很多代码之后,如果之前没有规划好,参考维护一个大问题,参考RTthread源码和linux之后了这个内部项目驱动程序写了APL,BLL,FML,HDL,BSP,HARDWARE
KE 架构在stm2的应用程序 如果是stm32使用cubemx和HAL库开发,HAL库就是特性F0 F1 F等型号,可以继承BSP层,同时HAL库又提供了内部的驱动,所以HAL库是包括了BSP和部分HDL层的如果没有变化了平台,很可能了,BSP层替换就可以了,其他的上层不会受到影响 1 HDL驱动层 最好用标准的接口,如串口就写和读,串口读的操作不要拆开里面去,也不要开主去连读,可以拆开里面去加到,然后主循环用去往循环的方式也可以。 #ifndef __HDL_DRIVER_MANAGER_H_ #define __HDL_DRIVER_MANAGER_H_ #include "common.h" void driver_com_init(void); 输入driver_com_handle(输入); 输入driver_com_exit(输入); void driver_com_regist_reccallback(uint32_t USARTx,void (*drv_com_m_handle)(unsigned char data)); void drv_com1_write(uint8_t 数据); void drv_com2_write(uint8_t 数据); void drv_com3_write(uint8_t 数据); void drv_com4_write(uint8_t 数据); void drv_com1_printf(char *fmt, ...); void drv_com2_printf(char *fmt, ...); void drv_com3_printf(char *fmt, ...); void drv_com4_printf(char *fmt, ...); #万一 2 FML模块层核心 功能在模块层, 主要有看门狗, 时间模块, 日志模块,文件系统模块等 模块函数接口是init , handle, exit handle 用于主循环调用 #ifndef __MODULE_LOG_H_ #define __MODULE_LOG_H_ void module_log_init(void); 无效模块日志句柄(无效); void module_log_exit(void); void module_log_write_e(char *tag,char *fmt, ...); void module_log_write_v(char *tag,char *fmt, ...); #define Logv module_log_write_v #define Loge module_log_write_e #万一 3 BLL业务层 BLL业务层通过调用不同的模块来完成功能 /*------------------------------------------------ -------------------------------------------------- -------------- *版权(c) * ------------------------------------------------- -------------------------------------------------- ------------ * 文件名:service_com.c * 作者:桐人 *简短的:???? * 日期:2020.11.06 * ------------------------------------------------- -------------------------------------------------- ------------ * 加入符数据简介 * ------------------------------------------------- -------------------------------------------------- ----------*/ #include "service_monitor.h" #include "module_iwdg.h" #include "module_itemp.h" #include "module_time.h" #include "module_pwr.h" #include "gpio.h" #include "board.h" #include "module_log.h" #include "module_filesystem.h" 静态无效mtimer_callback(void) { printf("rn---- 重启 --rn"); } 易失性字符 g_satate = 0; 静态无效 mcaltimer_callback(void) { module_pwr_stop_mode_wake(); g_satate = 1; } 静态输入 time_wakeup_callback(void) { printf("rn---- 打印--rn"); } /** * @函数名:service_com_init * @作者:桐人 * @Brief:服务??? * @ 日期:2020.11.06 * @调整: ... **/ void service_monitor_init(void) { /*检查处理系统是否从出现模式恢复确认系统是否从并恢复模式*/ 如果 (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET) { /*清除备用标志如果恢复则明显备用标志位*/ __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB); printf("rn 我的休息休息rn"); } module_iwdg_init(); module_itemp_init(); 模块时间初始化(); module_pwr_init(); module_log_init(); module_filesystem_init(); //module_time_set_alarm(0,16,16,40,mtimer_callback); //module_time_set_calalarm(1,0,0,5,mcaltimer_callback); //module_time_set_wakeup_time(5,time_wakeup_callback); //module_pwr_enter_stop_mode(); //module_pwr_enter_standby_mode(); } /** * @函数名:service_com_handle * @作者:桐人 * @Brief:服务??? * @ 日期:2020.11.06 * @调整: ... **/ 无效服务句柄(无效) { module_itemp_handle(); 模块时间句柄(); module_pwr_handle(); module_iwdg_handle(); 模块句柄(); module_filesystem_handle(); // gpio_write(LED1_GPIO_Port,LED1_Pin,1); // delay_ms(200); // gpio_write(LED1_GPIO_Port,LED1_Pin,0); // delay_ms(200); // //Logv("init","init ok"); } /** * @函数名:service_com_exit * @作者:桐人 * @Brief:服务??? * @ 日期:2020.11.06 * @调整: ... **/ void service_monitor_exit(void) { module_iwdg_exit(); } 4 APL应用层 实现APP的,比如计算器,日历等操作APP。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 12:55 , Processed in 0.910478 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号