自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (2)
  • 收藏
  • 关注

原创 ESP32开发阶段启用 Secure Boot 与 Flash encryption

Secure Boot 与 Flash encryption

2023-08-09 21:21:34 358

原创 ESP32 官方AT固件编译(从零开始环境搭建到编译完成全过程)

ESP32编译官方AT固件的流程

2023-07-27 21:13:48 1036

原创 STM32H7B0 同时启用D-Cache与ADC dma

使用STM32H7B0刷4.3寸屏幕,不开启D-Cache的话,是会卡顿的同时项目需要使用ADC dma采样,然而开启D-Cache之后,dma外设改变内部RAM后,并没有更改Cache内的数据吗,导致CPU无法正确得到RAM内的最新采样数据解决这个问题的办法很简单,就是在处理采样数据 之前,调用SCB_InvalidateDCache_by_Addr函数。需要注意的是1、这个函数的形参addr和dsize:addr : 操作的地址一定要是32字节对齐的。dsize :一定要是32字节的整数倍2、

2022-12-08 09:50:03 1118 1

原创 STM32H7B0 HAL OSPI配置的一次失败原因分享

使用 OSPI1 驱动W25Q128,但是始终无法调试成果,最后发现是HAL 库的问题。我使用的HAL库是CUBEMX自动生成的,CUBEMX版本是6.4。

2022-11-26 13:56:31 1209

原创 STM32 freertos堆栈溢出检查方法

Freertos栈溢出的判断方法

2022-08-26 20:08:18 1728

原创 FatFs 学习笔记

本文摘自《STM32 HAL 库开发实战指南 —基于野火 F407 霸天虎开发板》FatFs源文件说明option 文件夹下是一些可选的外部 c 文件,包含了多语言支持需要用到的文件和转换函数。diskio.c 文件是 FatFs 移植最关键的文件,它为文件系统提供了最底层的访问 SPI Flash芯片的方法,FatFs 有且仅有它需要用到与 SPI Flash 芯片相关的函数。diskio.h 定义了FatFs 用到的宏,以及 diskio.c 文件内与底层硬件接口相关的函数声明。00hi

2021-10-17 19:56:01 1812

原创 LwIP TCP Client 解决长数据发送的困扰

问题描述LWIP 的 TCP Client 发送数据可以调用 tcp_write() 函数,将数据储存在缓冲区里面,然后等待超时自动发送或者调用tcp_output()函数进行发送。然而 tcp_write() 函数 需要发送的数据过长时,将无法发送,并返回 ERR_MEM。tcp_write()函数解析tcp_write()的函数代码很多,就不细看代码了,先看tcp_write()的完整函数:err_t tcp_write(struct tcp_pcb *pcb, const void

2021-07-12 20:35:17 7491 3

原创 STM32F3 使用 HRTIM 与 ADC实现精准BOOST转换

硬件环境芯片 STM32F334C8Tx开发板 STM32F3348-Discovery升降压电路试验目的输入电压范围2-5V,恒定升压到10V输出实现原理根据原理图得知,要实现BOOST功能,需要控制PA8恒为高电平然后控制PA10为高电平,PA11低电平时为电感L3充电。再控制PA11为高电平,PA10低电平,让电感与输入电压一起放电,达到升压的目的软件配置1、ADC采样因为BOOST电路有纹波,为了实现ADC的精准采样,需要在纹波上升沿中间的瞬间进行准确采样需要将ADC配

2021-05-03 20:44:53 3925 4

原创 STM32 移植LwIP 实现网线插拔自动恢复

STM32 移植LwIP 之后,能正常联网通讯,但是发现2个问题,1、上电初始化前,未插入网线,之后就无法获取到IP地址(DHCP)2、正常通讯过程中,拔掉网线,然后插回去,不知道如何复位先看一下LWIP初始化代码/** * LwIP initialization function */int MX_LWIP_Init(){ /* Initilialize the LwIP stack with RTOS */ tcpip_init( NULL, NULL );

2021-04-29 10:02:35 4874 3

原创 DSP C2000 PSA CRC计算值恒为0的问题解决

前言这是我至今为止项目上遇到的最难解决的BUG了,网上对PSA的资料甚少,甚至官方手册都没提到PSA的功能,如果你遇到了这个问题,并搜到了这篇文章解决了问题,可以节省你大把时间来解决这个问题。所以相遇既是有缘,点个赞吧。PSA介绍并行串行分析器(PSA)是c28x设备中的一个模块,可用于在一个给定的存储器区域上生成一个40位的CRC。PSA多项式是。PSA通过监控数据读取数据总线(DRDB)来计算CRC值。一旦被激活以监控DRDB,当CPU通过DRDB读取数据时,PSA将在每个时钟周期中为DRD

2021-04-06 09:25:23 687 1

原创 IEC60730 CLASS B 代码安全认证 MCU自检

前言做一个项目,UL认证时,需要MCU做各种自检来保证产品安全。关于IEC60730家用电器的制造商必须采取措施,以确保其产品的安全和可靠地运行,以符合国际电气公司的IEC60730标准。IEC60730标准涵盖了交流电器的机械、电气、电子、EMC和交流电器的异常操作。包括为自动电子控制定义的三种软件分类:A类功能,如房间恒温器、湿度控制、照明控制、计时器和开关。它们的区别在于不依赖于设备的安全。B类功能,如热切断装置,旨在防止洗衣机、洗碗机、烘干机、冰箱、冰柜和炊具等电器的不安全操作。C类功能,

2021-03-31 20:12:46 6159

原创 关于STM32F407的FLASH擦写

今天移植了某个F1的工程到F4上,发现STM32F407的FLASH不能擦除某页。只能按扇区擦除。而后面的扇区大小,高达128K,对于我们一般的应用来说,储存几个KB的数据就行了,不需要用到这个大的扇区来储存配置数据。所以对于STM32F407来说,想要储存一些数据,最好不要储存到内部FLASH里,可以外部挂载一个EEPROM。或者使用一个大胆的想法来使用内部扇区储存数据:每次储存不去擦除,直到储存到扇区末尾为止再去整个扇区擦除。每次读取时,遍历扇区,寻找最后储存的数据为准。...

2021-03-29 19:51:24 2519

原创 记录一次因使用STM32F407VGT6的CCM data RAM使用造成的BUG

STM32F407VGT6拥有192K (128 K + 64K)的RAM其中128 K 是SRAM64K 是CCM data RAMCCM共64KB,是直接挂在D-bus上的,除了CPU(即Cortex-M核)之外,谁都无法访问。此外,由于CCM不属于BusMatrix的一部分,所以也就不能被其他组件访问,例如DMA控制器。其实大部分情况下128K也非常足够使用了,如果没有掌握使用这部分RAM的技巧,最好KEIL中不要勾选这部分RAM,否则会造成莫名其妙的BUG,,...

2021-03-29 19:43:47 1569 1

原创 使用FREERTOS,程序卡死在port.c 的 configASSERT行的解决办法

做一个项目 STM32 + LWIP + DHCP ,结果一直获取不到动态的IP地址,仿真得知卡死在configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );这一行。可能是某个外设的中断等级太高了,降低后就可以解决了。卡死原因如下:使用FreeRTOS API的中断不能保留其默认优先级为0如果一个服务例程(ISR)为一个优先级高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断调用一个ISR安全的Fre

2021-03-09 17:47:04 3572 1

原创 LwIP 与 ETH外设简介 与 STM32CUBEMX的配置方法

LwIP 介绍LwIP 全名:Light weight IP,意思是轻量化的 TCP/IP 协议LwIP 的设计初衷是:用少量的资源消耗实现一个较为完整的 TCP/IP 协议栈,其中“完整”主要指的是 TCP 协议的完整性,实现的重点是在保持 TCP 协议主要功能的基础上减少对 RAM 的占用。此外 LwIP 既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行。LwIP 的代码已经交给 Savannah 托管,LwIP 的项目主页是:http://savannah.nongnu.org/p

2021-03-08 19:29:56 1811

原创 WEBSOCKET学习笔记

项目背景最近在做物联网嵌入式产品,网络协议需要使用到WEBSOCKET协议来通讯,为了实现这个功能,决定用 C语言写一个这个协议,以便在低成本的硬件环境下实现WEBSOCKET通讯功能。以下内容,多数来自于网络,进行了排版总结。本文参考文档:https://www.amobbs.com/thread-5587801-1-1.html?_dsign=7c3738b7https://www.runoob.com/html/html5-websocket.htmlhttps://baike.baidu

2021-02-25 19:29:43 758

原创 STM32HAL库,无DMA的串口,实现不定长空闲中断

前言项目上需要5个串口,于是选型了STM32F103RCTx,编写代码的时候发现UART5没有DMA,于是自己写了一个驱动,来模拟DMA串口不定长空闲中断接收(另外一篇博文有所描述)CUBEMX配置配置基本串口参数打开中断修改工程代码实现单字节接收中断1、定义数据缓冲区uint8_t RxUart5[1]; //单字节接收缓冲区volatile uint16_t DMA_Usart5_RxSize=0; //虚拟DMA缓冲区接收数据的大小volatile uint8_t recv_e

2021-01-02 16:08:58 574 1

原创 ESP32 官方AT指令,WIFI作为AP使用

[10:36:17.151]发→◇AT+CWMODE=3 //设置 Wi-Fi 模式□[10:36:17.157]收←◆AT+CWMODE=3OK[10:36:18.790]发→◇AT+CIPMUX=1 //使能多连接□[10:36:18.796]收←◆AT+CIPMUX=1OK[10:36:24.193]发→◇AT+CIPSERVER=1 // 开启TCP 服务器 默认端口333□[10:36:24.198]收←◆AT+CIPSERVER=1OK[10:36:45.335]收

2020-12-10 10:49:34 2687

原创 ESP32 烧录 AT固件及验证

烧录环境模组型号:ESP32-WROVER-E使用工具(官网可下载):flash_download_tool_v3.8.5_1.zip固件包(官网可下载):ESP32-WROVER_AT_Bin_V2.0flash_download_tool的配置:1、打开flash_download_tool_v3.8.5.exe选择Developer Mode2、选择ESP32 Download Tool3、根据固件包内download.config文件配置工具固件包里有download.

2020-11-19 08:05:15 4315 5

原创 记录 STM32F303 的 OPAMP1 与 ADC1_IN4 同时使用的一个问题

在做一个项目的时候,用到F303内部可调节增益的运放,只用到了PA1以及PA2,结果发现增益调节后,ADC1_IN4读取的值会随着增益的改变而改变。同时OPAMP1的输出值也变得非常不稳定。将PA3的ADC走线用手术刀割断后(引脚悬空)。OPAMP1的输出值就稳定了。由于PA3脚原先是OPAMP1的引脚之一,虽然将OPAMP1配置为增益模式后不需要用到PA3脚,但是我估计最好也是不能再使用PA3脚了。在此记录一下问题,有遇到相同问题的小伙伴可以参考一下。...

2020-11-07 16:59:44 1978

原创 TMS320F28035 中断中使用DINT,无法关闭中断的原因

在做项目的时候,发现一个有趣的现象在中断回调函数中,使用了DINT,关闭全局中断后,一旦退出中断,全局中断将自动重新开启。是因为在中断发生时,INTM 已经入栈保存了,所以在出栈的时候,将被自动复位。以下是中断相关寄存器,在这做个记录...

2020-10-15 18:01:55 943 1

原创 TMS320F28035 的EPWM触发ADC采样笔记

(一)ADC的配置调用库里面函数的即可 InitAdc(); // For this example, init the ADCAdcOffsetSelfCal();(二)EPWM的配置EPWM的触发频率计算EPWM时钟频率 = 系统时钟频率 / (HSPCLKDIV * CLKDIV );▲举例假如系统时钟为60M,寄存器为如下配置EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBCTL.bit.CLKDIV = 0;则EPWM1的时钟频

2020-10-13 17:42:05 8672

原创 CCS报错 creating output section XXXXXXXXX without SECTIONS specification 解决方法

是CMD的问题,标题中XXXXXXXXX可能为某段程序。在CMD文件中未定义程序存放的位置。比如说,报了 creating output section csmpasswds without SECTIONS specification 的警告。只需要打开CMD文件在SECTIONS文件中加入 csmpasswds : > RAML2, PAGE = 1即可;SECTIONS{ /* Setup for "boot to SARAM" mode:

2020-10-10 10:35:01 10105 2

原创 CCS6 报错: C28FPU32 解决办法

移植程序的时候,编译后出现以下错误:XXXXXXX specifies ISA revision “C28FPU32”, which is not compatible with ISA revision “C2700” specified in a previous file or on the command line XXXXXXX C/C++ Problem解决办法把以上的softlib改为fpu32,就可以编译通过了...

2020-10-09 09:41:05 2014 3

原创 Linux 驱动编写入门五步走

一、总体思路简述流程图笔记PS :高清可放大查看二、完成 关于 加载与卸载模块的函数(一)包含#include <linux/module.h> #include <linux/init.h>(二)函数示例static int __init hello_init(void) { printk("Hello, I'm ready!\n"); return 0; } static void __exit hello_exit(void) { pri

2020-08-08 12:59:27 552

原创 raw.githubusercontent.com 拒绝了我们的连接请求 解决方法

使用Github下载别人的项目的时候,有时会遇到raw.githubusercontent.com 拒绝了我们的连接请求或者会遇到找不到 raw.githubusercontent.com 的服务器 DNS 地址我们只需要修改 C:\Windows\System32\drivers\etc\hosts 文件:在其最后面加入 151.101.76.133 raw.githubusercontent.comhosts文件需要有管理员权限才能修改的话,我们只需要用管理员权限打开记事本然后打开

2020-08-05 16:43:42 20663

原创 CCS6工程设置全局宏定义

在KEIL 中 可以 define 一些东西,配置工程。在CCS中也有类似的功能,操作方法如下然后点击 + ,输入要定义的内容即可

2020-08-03 10:41:15 1764 1

原创 Linux 编写、编译、加载 最简单的模块

一、概述Linux 内核可以将一些很少用到或者暂时不用的功能编译为模块,在需要的时候再动态加载进内核,可以减小内核的体积,加快启动速度。注意事项:编译模块的内核配置必须与所运行内核的编译配置一样编写模块#include <linux/module.h>#include <linux/init.h>/*__init 表示初始化函数仅仅在初始化期间使用,一旦初始化完毕,将释放初始化函数所占用的内存,类似的还有__initdata;*/static int __i

2020-07-29 16:55:18 808

原创 使用CCS 安装 C2000ware 并创建示例项目

一、CCS安装C2000WARE(一)下载C2000Ware_3_02_00_00_setup.exe链接:https://pan.baidu.com/s/1BCzuNzCN_QBmvzJ1vDqISg提取码:sh5m(二)加载C2000Ware到CCS1.安装C2000Ware_3_02_00_00_setup.exe2.打开Resource Explorer3.点击ALL右侧的添加4.点击ADD,选择C2000文件夹5.加载完成后下面就出现了c2000的项目资源包6.选中需

2020-07-23 15:43:36 14342 4

原创 STM32 ADC 采样值不准确 情况分析及解决办法

情况1使用ADC / DMA 循环自动采样的方式,但是采样数据与预估数据相差很大,小了很多。解决办法配置adc的时候,采样周期需要设置大一些。sConfig.SamplingTime = ADC_SAMPLETIME_71CYCLES_5 ;原因分析采样周期太小,会导致采样不准确,采样周期越大越准确。采样周期太大会影响采样时间,计算公式:采样时间(us) = (12.5+SamplingTime ) / ADC时钟(MHZ)情况2仿真调试时,采样准确,但是设备重新上电后,采样不准确,偏

2020-07-21 13:09:43 14787 5

原创 EasyARM-i.MX283A 更换内核开机LOGO

安装arm-fsl-linux-gnueabi-gcc 交叉工具链1获取安装包链接:https://pan.baidu.com/s/1-Dh9dLEhpvohoMMkgca6sQ提取码:xdrf2安装工具链mkdir -p /opt/freescale/usr/localtar zxvf gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz -C /opt/freescale/usr/local3添加环境变量在/etc/profil

2020-06-29 16:40:15 819

原创 linux与QT(ARM)的中文显示配置

ubuntu中文支持安装中文语言包打开 System Settings(系统设置)菜单,点击打开 Language Support(语言支持)选项卡。Install / Remove Languages,在弹出的选项卡中下拉找到Chinese(Simplified),即中文简体,在后面的选项框中打勾。然后点击Apply Changes 提交,系统会自动联网下载中文语言包。如果提示缺少安装包,在命令行输入:sudo apt-get update。(保证ubuntu 是联网的)。设置使用中文语言包L

2020-06-27 13:43:03 1117

原创 EasyARM-i.MX283A 开机自动自动登录并启动QT应用程序

参考自 https://blog.csdn.net/u014213012/article/details/72772061一、编译autologin.c程序在虚拟机下,交叉编译 autologin.c#include <unistd.h>int main() {execlp(“login”,“login”,"-f",“root”,0);return 0;}编译arm-none-linux-gnueabi-gcc autologin.c -o autologin得到可执行文件

2020-06-08 11:27:13 456

原创 EasyARM-i.MX283A 开发环境配置笔记

EasyARM-i.MX283A 开发环境配置笔记准备开发环境所需的文件:已上传网盘,自行下载链接:https://pan.baidu.com/s/1C3SB3UR5Yfn8huMj5kP7GA提取码:gy1y一、创建虚拟机使用:ubuntu-12.04-desktop-i386.iso链接:https://pan.baidu.com/s/1fVtGD74s7-raClCYlmS87g提取码:3622选择网络桥接模式 4GCtrl + alt + T 打开终端sudo apt-g

2020-06-06 16:55:14 1550

原创 C# 16进制数据数组格式转化工具

项目中有时候需要把得到的一串数据,加到程序中去:需要把上图的数据转化为下图的格式。需要转化格式,数据很多的情况下,手动加上0x与逗号,非常麻烦。如果需要反复更改数据测试就更麻烦了。我自制了一个简单的小工具来自动转化格式。工具界面如下:数据拷贝后,点击转化就可,已经实现了自动换行PS:工具使用4.6.1的框架。工具下载链接:链接:https://pan.baidu.com/...

2020-04-15 11:14:13 412

原创 STM32 官方DSP的 FFT库使用

最早我实现FFT是移植的网上搜罗来的FFT 的 C程序代码,奈何运算效率太低,只好放弃#include <stdio.h>#include <math.h>#include <stdlib.h>#include "FFT.h"#include "sample.h"#define N DEPTH_ADC_MAXcomplex x[N + 10]...

2020-03-31 16:31:43 7414 14

原创 STM32 HAL库 ADC DMA无法正常运行的一次解决经验

使用STM32CUBE 配置自动生成的工程,使用的V5.4.0版本采用以往的配置方法,但是ADC无法正常运行在调换了DMA和ADC1的初始化顺序之后,可以正常运行。正确的初始化顺序应该是,先初始化DMA,再初始化ADC,如下图所示。STM32CUBE自动生成的代码有误。再初始化完成之后,运行代码:HAL_ADCEx_Calibration_Start(&hadc1);可以校...

2020-03-06 15:51:52 9406 7

原创 STM32 HAL库 DMA接收异常,导致无法继续接收的解决办法

项目上遇到这个问题,查了很多论坛和文章,得到解决办法,分享一下串口 错误的时候,读取huart->ErrorCode 这个值,如果不为0,说明串口有误,需要重新初始化串口重新初始化串口方法(以串口4为例): memset(&huart4,0,sizeof(UART_HandleTypeDef) ); memset(&hdma_usart4_rx,0,sizeof(DM...

2019-11-29 13:15:23 6437 2

原创 使用KEIL , 生成BIN文件

打开工程配置找到keil目录下的fromelf.exe文件,复制文件路径我的电脑里的路径是:D:\Keil_v5\ARM\ARMCC\bin\fromelf.exe输入命令【fromelf.exe文件路径、文件名 】–bin -o 【生成BIN文件存放路径、文件名 】【keil编译生成的.axf文件存放路径、文件名】最后得到命令举例:D:\Keil_v5\ARM\ARMCC\bi...

2019-11-27 15:31:54 363

原创 数码管、lED显示相关代码

#include "NixieTube_Drv.h"#include "Display_Lib.h"#ifdef NixieTube_ENstatic void Disp_String(char * src){ uint8_t wei = 0; for(uint8_t i = 0 ;i < 10 ; i ++) { if(*(src + i + 1) == '.' )...

2019-11-26 16:58:30 2016

译文_UL1699B.docx

UL1699B(光伏 (PV) 直流弧故障电路保护安全UL标准) 中文译文 机器翻译,带目录 ,翻译的比较好 ,有参考价值

2020-06-03

OCPP-1.6-JSON-Specification-中文.doc

OCPP-1.6开放充电协议的中文翻译版,翻译的不是很好,有些部分看起来还是机器翻译的?但是总体上还是能读懂的。

2020-03-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除