原创 STM32F103移植FreeModbus實現ModbusRTU和ModbusTCP同時工作

移植過程比較繁瑣就不細說了,說一下注意點就行 一、共用函數 不管是TCP還是RTU有些函數是共用的,比如: eMBErrorCode eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT us

原创 STM32F103 通過SD卡IAP升級程序,帶MD5校驗,(帶源碼)可在實際項目中使用

一、將APP程序從SD卡搬運到MCU中 首先從sd卡通過FAFTS文件操作系統打開程序文件,然後記錄下複製開始地址和程序文件大小 fileOperionResult = f_open(&updateProgFile,buf,FA_

原创 4.2V鋰電池充電、放電保護電路分享

充電爲了防止過充有兩層保護,採用DW01和MH6017R,放電過放由DW01保護。適用於單節鋰電池。

原创 STM32利用AES加密數據、解密數據

一、頭文件 #ifndef _AES_H #define _AES_H // 以bit爲單位的密鑰長度,只能爲 128,192 和 256 三種 #define AES_KEY_LENGTH 128 // 加解密模式 #de

原创 STM32F407VET6兩個CAN同時工作

一、注意點 兩個CAN接口同時工作主要是初始化的時候必須一起使能時鐘 二、代碼分享 u8 can_init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode) { u16 std_id_1 =0x1

原创 STM32驅動SPI接口EEPROM,AT25010、AT25020、AT25040

一、源代碼 void eeprom_init() { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2Per

原创 STM32驅動SPI接口的ST7798

lcd.c void lcd_init() { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2Pe

原创 canOpen學習十一之canOpen應用出現問題-通過SDO修改了從機心跳時間後等好長時間從機纔會按照修改的時間發送心跳

產生上述問題的主要原因是當我們修改心跳時間後系統會調用OnHeartbeatProducerUpdate這個函數去更新NextTime的值,下面看看定時器中的處理: 這是一個1ms的定時器 //定時器3中斷服務函數 void TI

原创 canOpen學習十之canOpen應用實現緊急事件發送

一、簡介 所謂緊急事件就是系統出現錯誤後需要告知其他設備我出錯了,其他設備做出對應的反應。 緊急事件用到的索引是0x1001和0x1003,下面詳細介紹一下這兩個索引 對象0x1001: 對象0x1003: 二、代碼解析

原创 canOpen學習十二之canOpen回調函數的定義與使用

一、回調函數的定義 首先再用字典編輯器的時候就要勾選有回訪: 然後定義自己的回調函數:回調函數的函數指針爲 typedef UNS32 (*ODCallback_t)(CO_Data* d, const indextable *

原创 STM32顯示軟件取模圖片

一、軟件取模參考 二、軟件代碼 //4096色/16位真彩色/18位真彩色/24位真彩色/32位真彩色 //圖像數據頭結構體 __packed typedef struct _HEADCOLOR { unsigned

原创 STM32顯示通過取模軟件取模的漢字

一、取模軟件設置,參考下圖 二、軟件參考,正點原子開發板 //放頭文件 struct typFNT_GB16 // 漢字字模數據結構體 { u8 Index[2];// 漢字內碼索引,漢字在內存中佔兩個字節 char Msk[1

原创 canOpen學習九之canOpen應用實現主機自動發送同步幀

主機發送同步幀主要有索引爲0x1005、0x1006、0x1007的字典設置。下面詳細介紹一下: 對象0x1005: 對象0x1006: 對象0x1007: 主機字典配置: /* index 0x1005 : SYNC

原创 mpu6050 DMP數據幾秒後才能保持穩定的解決方法

原因是mpu6050裝反了,第一次是貼板上面、第二次貼板下面了。就是下圖: 需要修改矩陣方向: 原來是: static signed char gyro_orientation[9] = { 1, 0, 0,

原创 python中進程的編寫

        程序編寫完沒有運行稱之爲程序。正在運行的代碼就是進程。在Python3語言中,對多進程支持的是multiprocessing模塊和subprocess模塊。multiprocessing模塊爲在子進程中運行任務、通