STM32上實現簡化版的AUTOSAR DEM模塊

請添加圖片描述

文章目錄

  • 摘要


摘要

在一些可以不使用AUTOSAR的項目中,往往也有故障檢測和DTC存儲的需求,開發一套類似于AUTOSAR DEM模塊的軟件代碼,能夠滿足DTC的檢出和存儲,使用FalshDB代替Nvm模塊,輕松構建持久化存儲,如果你也有這樣的需求,請閱讀本篇,希望能夠幫到你。


/********************************************************************************* @file    dem.c* @brief   DEM模塊實現 - 基于FlashDB的故障管理* @note    支持功能:*           - DTC狀態管理(當前/歷史故障)*           - 故障計數器*           - 快照功能*           - FlashDB持久化存儲*******************************************************************************/
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "fdb.h"
#include "stm32f4xx_hal.h"/* 配置區 - 根據實際硬件調整 -------------------------------------------------*/
#define DEM_DB_NAME              "dem_db"        // 數據庫名稱
#define DEM_MAX_DTC_ENTRIES      50              // 最大DTC條目數
#define DEM_CURRENT_THRESHOLD    3               // 當前故障確認閾值
#define DEM_HISTORY_MAX_COUNT    0xFF            // 歷史故障最大計數/* 宏定義 --------------------------------------------------------------------*/
#define DTC_STATUS_CURRENT       (0x01U)         // 當前故障狀態位
#define DTC_STATUS_HISTORY       (0x02U)         // 歷史故障狀態位
#define DEM_SNAPSHOT_MAGIC       (0xDEADC0DE)    // 快照數據魔數/* 類型定義 ------------------------------------------------------------------*/
#pragma pack(push, 1)  // 嚴格字節對齊
/*** @brief  DTC條目存儲結構*/
typedef struct {uint32_t dtc_code;           // DTC編碼 (SAE標準格式)uint8_t status;              // 狀態位uint16_t current_counter;    // 當前故障計數器uint16_t history_counter;    // 歷史故障計數器uint32_t first_occurrence;   // 首次發生時間戳uint32_t last_occurrence;    // 最后發生時間戳
} DTC_Entry;/*** @brief  快照數據結構*/
typedef struct {uint32_t magic;             // 魔數校驗uint32_t timestamp;         // 快照時間戳uint16_t dtc_count;         // 有效DTC數量DTC_Entry entries[];        // DTC條目數組
} DEM_Snapshot;
#pragma pack(pop)/* 模塊全局變量 --------------------------------------------------------------*/
static struct fdb_kvdb dem_kvdb;            // FlashDB實例
static DTC_Entry dtc_list[DEM_MAX_DTC_ENTRIES];

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73264.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73264.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73264.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html css網頁制作成品——糖果屋網頁設計(4頁)附源碼

目錄 一、&#x1f468;?&#x1f393;網站題目 二、??網站描述 三、&#x1f4da;網站介紹 四、&#x1f310;網站效果 五、&#x1fa93; 代碼實現 &#x1f9f1;HTML 六、&#x1f947; 如何讓學習不再盲目 七、&#x1f381;更多干貨 一、&#x1f468;?&#x1f…

Postman下載安裝及簡單入門

一&#xff0e;Postman簡介 Postman是一款API測試工具&#xff0c;可以幫助開發、測試人員發送HTTP請求&#xff0c;與各種API進行交互&#xff0c;并分析響應 二&#xff0e;下載與安裝 訪問Postman官網&#xff08;https://www.postman.com/&#xff09;&#xff0c;下載適…

免費blender模型網站推薦

前言:博主最近在玩blender建模,有時為了節省時間想用現成的模型,網上零零碎碎的大多多需要付費,自己找了些好用且免費的blender素材庫網站,希望對你有幫助 綜合資源網站 Blender布的 網址:https://blenderco.cn/ 簡介:提供上萬個Blender模型、插件、貼圖資源,更新頻率高…

基于C語言的簡單HTTP Web服務器實現

1. 概述 本案例使用C語言實現了一個簡單的HTTP服務器&#xff0c;能夠處理客戶端的GET請求&#xff0c;并返回靜態文件&#xff08;如HTML、圖片等&#xff09;。在此案例中案例&#xff0c;我們主要使用的知識點有&#xff1a; Socket編程&#xff1a;基于TCP協議的Socket通信…

大型語言模型與強化學習的融合:邁向通用人工智能的新范式

1. 引言 大型語言模型&#xff08;LLM&#xff09;在自然語言處理領域的突破&#xff0c;展現了強大的知識存儲、推理和生成能力&#xff0c;為人工智能帶來了新的可能性。強化學習&#xff08;RL&#xff09;作為一種通過與環境交互學習最優策略的方法&#xff0c;在智能體訓…

langchain--LCEL

文章目錄 介紹優勢運行接口 介紹 LCEL的全稱是Lang Chain Expression Language。其實他的用處就是使用“|”運算符鏈接LangChain應用的各個組件。 是一種聲明式的方法來鏈接Langchain組件。LCEL從第一天起就被設計為支持將原型投入生產&#xff0c;無需代碼更改&#xff0c;從…

PyQt基礎——簡單的窗口化界面搭建以及槽函數跳轉

一、代碼實現 import sysfrom PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QMessageBox from PyQt6.uic import loadUi from PyQt6.QtCore import Qtclass LoginWindow(QWidget):def __init__(self):sup…

Android 11.0 監聽某個app啟動或者退出功能實現

1.前言 在進行11.0的系統定制開發中,在某些app的定制過程中,需要知道某個app的啟動記錄和退出記錄, 所以就需要監聽某個app的啟動和退出的過程,需要在Activity的生命周期中來實現監聽功能 2.監聽某個app啟動或者退出功能實現的核心類 frameworks\base\core\java\android…

再談 Multiscale deformable attention

文章目錄 DCN 可變形卷積單尺度 deformable attention多尺度&#xff08;multiscale&#xff09; deformable attention精華代碼&#xff1a;deformbale attentionattention 計算&#xff1a;獲取不同尺度參考點&#xff1a; DCN 可變形卷積 deformable attention 靈感來源可變…

Java 大視界 -- Java 大數據在智慧文旅虛擬導游與個性化推薦中的應用(130)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

多源 BFS_多源最短路(十八)542. 01 矩陣 中等 超級源點思想

542. 01 矩陣 給定一個由 0 和 1 組成的矩陣 mat &#xff0c;請輸出一個大小相同的矩陣&#xff0c;其中每一個格子是 mat 中對應位置元素到最近的 0 的距離。 兩個相鄰元素間的距離為 1 。 示例 1&#xff1a; 輸入&#xff1a;mat [[0,0,0],[0,1,0],[0,0,0]] 輸出&#xff…

Ubuntu24.04 LTS 版本 Linux 系統在線和離線安裝 Docker 和 Docker compose

一、更換軟件源并更新系統 在 Ubuntu 24.04 LTS 中&#xff0c;系統引入了全新的軟件源配置格式。現在的源配置文件內容更加結構化且清晰&#xff0c;主要包含了軟件類型 (Types)、源地址 (URIs)、版本代號 (Suites) 以及組件 (Components) 等信息。 # cat /etc/apt/sources.li…

c++介紹智能指針 十二(2)

智能指針share_ptr,與unique_ptr不同&#xff0c;多個shar_ptr對象可以共同管理一個指針&#xff0c;它們通過一個共同的引用計數器來管理指針。當一個智能指針對象銷毀時&#xff0c;計數器減一。當計數器為0時&#xff0c;會將所指向的內存對象釋放。 #include<memory>…

react和vue 基礎使用對比

1.實現功能&#xff08;ts&#xff09; 0.基礎屬性使用 1.組件直接的通信 2.useState 動態修改值 3.循環遍歷功能 4.實現類型vue 的 watch &#xff0c;filter&#xff0c;computed 屬性功能 5.實現類似vue2的生命周期 5.類型vue v-if功能的實現 2.文件結構圖 3.具體代碼 in…

深度學習 常見優化器

一、基礎優化器 隨機梯度下降&#xff08;SGD&#xff09; ? 核心&#xff1a;?θJ(θ) η * ?θJ(θ) ? 特點&#xff1a;學習率固定&#xff0c;收斂路徑震蕩大 ? 適用場景&#xff1a;簡單凸優化問題 ? 改進方向&#xff1a;動量加速 二、動量系優化器 2. SGD with…

監控快手關注列表更新以及去視頻水印視頻

def printData(self):if len(self.UpdateDataList) > 0:self.UpdateDataList sorted(self.UpdateDataList, keylambda x: x[minutes]) # 先更新的在前sucess 0for index, video in enumerate(self.UpdateDataList):minutes video[minutes]if minutes > self.updateIn…

前端 JavaScript 中快速發起多個下載請求時,解決瀏覽器的并發下載連接限制

為什么會漏掉鏈接&#xff1f; 當你在前端 JavaScript 中快速發起多個下載請求時&#xff0c;瀏覽器可能無法同時處理所有請求&#xff0c;導致一些請求被忽略。這通常與瀏覽器的并發連接限制有關&#xff0c;例如 Chrome 可能限制每秒下載 10 個文件。 如何避免漏掉鏈接&…

如何修改桌面圖標——文件夾圖標(Windows 10)

修改文件夾圖標 EX&#xff1a;新建文件夾&#xff0c;程序創建文件夾等 修改桌面文件夾圖標&#xff0c;打開右鍵菜單功能項&#xff0c;點擊“屬性” 在屬性窗口頁面找到并單擊自定義&#xff0c;然后點擊“更改圖標” 從列表中選擇喜歡的圖標&#xff0c;或點擊瀏覽選擇個…

LiveCommunicationKit OC 實現

一、實現效果: ? LiveCommunicationKit?是蘋果公司在iOS 17.4、watchOS 10.4和visionOS 1.1中引入的一個新框架,旨在優化VoIP通話的交互體驗。該框架提供了與

基于Bert模型的增量微調3-使用csv文件訓練

我們使用weibo評價數據&#xff0c;8分類的csv格式數據集。 一、創建數據集合 使用csv格式的數據作為數據集。 1、創建MydataCSV.py from torch.utils.data import Dataset from datasets import load_datasetclass MyDataset(Dataset):#初始化數據集def __init__(self, s…