- 博客(86)
- 资源 (2)
- 收藏
- 关注
原创 【Keras学习笔记】手写识别
本文介绍了使用Keras构建神经网络模型的关键步骤。首先创建顺序模型,添加Flatten层将28×28图像转换为一维向量。随后加入64个神经元的Dense层,使用ReLU激活函数处理输入,解释其"正数放行,负数归零"的特性。最后一层是具有10个神经元的Dense层,对应10个输出类别,使用Softmax激活函数进行多分类。文章还探讨了神经元权重随机初始化的必要性,以及ReLU函数在神经网络中的作用机制。该模型架构适用于MNIST手写数字识别任务。
2025-08-04 19:36:02
415
原创 【Keras学习笔记】线性回归
前面学习了如何开发环境搭建,https://blog.csdn.net/tiantangmoke/article/details/149812331?spm=1001.2014.3001.5502现在继续学习一个简单的模型训练过程一、环境配置import numpy as np导入科学计算库NumPy,并简写为np。NumPy是Keras/TensorFlow的基础依赖库,提供高效的数组(张量)操作能力。导入Matplotlib的绘图模块,简写为plt。用于数据可视化和模型分析。如果报错需要安装
2025-08-01 08:26:22
582
原创 【Keras学习笔记】开发环境搭建
本文介绍了Anaconda的安装与使用教程。首先从清华镜像下载Anaconda并完成安装,然后讲解如何创建Python虚拟环境(以Python 3.6为例)。接着详细说明如何在虚拟环境中安装TensorFlow 2.0和Keras框架,并配置Jupyter Notebook开发环境。最后演示如何启动Jupyter Notebook并选择虚拟环境进行开发。教程通过分步命令和截图说明,帮助用户快速搭建Python深度学习开发环境,解决多项目开发中的依赖冲突问题。
2025-07-31 19:39:38
369
原创 RK3562 OTA 方法
RK3562平台QT应用OTA升级数据保留方案 本文介绍了RK3562平台直流桩主控板开发中实现OTA升级并保留QT应用数据的方法。关键步骤包括:1)修改package-file文件,注释掉oem和userdata分区;2)打包升级镜像;3)通过HTTP下载固件到userdata分区;4)执行update命令完成升级。通过将QT应用配置数据存储在userdata分区,确保OTA升级后用户数据不会丢失。
2025-07-19 11:09:08
415
原创 将QT可执行文件编译进嵌入式根文件系统的镜像并设置开机自动运行
本文介绍了将QT应用集成到量产烧录镜像并实现开机自启动的方法。首先将QT可执行文件放入SDK的buildroot/system/skeleton/app目录;然后在etc/init.d下创建S99myqt.sh启动脚本,使用"&"使程序后台运行;最后重新编译buildroot根文件系统并烧录设备。通过rcS脚本机制自动执行S开头的启动脚本,实现QT应用的开机自启动。
2025-07-19 09:27:48
319
原创 QT 交叉编译环境下,嵌入式设备显示字体大小和QT Creator 桌面显示不一致问题解决
本文介绍了在嵌入式Qt环境中设置自定义字体的方法。首先通过fc-list命令查询系统支持的字库,然后使用QFontDatabase加载指定路径的字体文件(如SourceHanSansCN-Normal.otf)。代码示例展示了如何为Label控件设置自定义字体,包括获取字体家族名、创建QFont对象并设置像素大小。该方法也可应用于其他Qt控件,需要注意检查字体路径是否正确以确保加载成功。
2025-07-17 18:59:54
330
原创 【RK3568 嵌入式linux QT开发笔记】 二维码开源库 libqrencode 交叉静态编译和使用
本文针对在RK3568平台上编译二维码生成库libqrencode遇到的问题进行了修正。主要步骤包括:1)下载软件包;2)交叉编译zlib、libpng和libqrencode库,重点修正环境变量和路径配置;3)在QT项目中集成静态库(.a文件)和使用方法。提供了详细的编译参数和代码示例,成功实现了在嵌入式平台生成二维码的功能。文章对原参考资料的疏漏之处进行了补充,解决了编译产物无法在目标平台运行的问题,并展示了最终的测试效果图。
2025-06-23 20:43:49
1141
原创 ESP32开发阶段启用 Secure Boot 与 Flash encryption
Secure Boot 与 Flash encryption
2023-08-09 21:21:34
650
原创 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
1600
原创 STM32H7B0 HAL OSPI配置的一次失败原因分享
使用 OSPI1 驱动W25Q128,但是始终无法调试成果,最后发现是HAL 库的问题。我使用的HAL库是CUBEMX自动生成的,CUBEMX版本是6.4。
2022-11-26 13:56:31
1870
原创 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
2492
原创 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
11052
5
原创 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
6236
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
7846
4
原创 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
938
3
原创 IEC60730 CLASS B 代码安全认证 MCU自检
前言做一个项目,UL认证时,需要MCU做各种自检来保证产品安全。关于IEC60730家用电器的制造商必须采取措施,以确保其产品的安全和可靠地运行,以符合国际电气公司的IEC60730标准。IEC60730标准涵盖了交流电器的机械、电气、电子、EMC和交流电器的异常操作。包括为自动电子控制定义的三种软件分类:A类功能,如房间恒温器、湿度控制、照明控制、计时器和开关。它们的区别在于不依赖于设备的安全。B类功能,如热切断装置,旨在防止洗衣机、洗碗机、烘干机、冰箱、冰柜和炊具等电器的不安全操作。C类功能,
2021-03-31 20:12:46
8911
原创 关于STM32F407的FLASH擦写
今天移植了某个F1的工程到F4上,发现STM32F407的FLASH不能擦除某页。只能按扇区擦除。而后面的扇区大小,高达128K,对于我们一般的应用来说,储存几个KB的数据就行了,不需要用到这个大的扇区来储存配置数据。所以对于STM32F407来说,想要储存一些数据,最好不要储存到内部FLASH里,可以外部挂载一个EEPROM。或者使用一个大胆的想法来使用内部扇区储存数据:每次储存不去擦除,直到储存到扇区末尾为止再去整个扇区擦除。每次读取时,遍历扇区,寻找最后储存的数据为准。...
2021-03-29 19:51:24
3277
原创 记录一次因使用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
2286
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
5715
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
2797
原创 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
978
原创 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
908
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
3544
原创 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
5097
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
2724
原创 TMS320F28035 中断中使用DINT,无法关闭中断的原因
在做项目的时候,发现一个有趣的现象在中断回调函数中,使用了DINT,关闭全局中断后,一旦退出中断,全局中断将自动重新开启。是因为在中断发生时,INTM 已经入栈保存了,所以在出栈的时候,将被自动复位。以下是中断相关寄存器,在这做个记录...
2020-10-15 18:01:55
1251
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
12024
原创 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
13163
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
2832
4
原创 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
686
原创 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
21507
原创 CCS6工程设置全局宏定义
在KEIL 中 可以 define 一些东西,配置工程。在CCS中也有类似的功能,操作方法如下然后点击 + ,输入要定义的内容即可
2020-08-03 10:41:15
2228
1
原创 Linux 编写、编译、加载 最简单的模块
一、概述Linux 内核可以将一些很少用到或者暂时不用的功能编译为模块,在需要的时候再动态加载进内核,可以减小内核的体积,加快启动速度。注意事项:编译模块的内核配置必须与所运行内核的编译配置一样编写模块#include <linux/module.h>#include <linux/init.h>/*__init 表示初始化函数仅仅在初始化期间使用,一旦初始化完毕,将释放初始化函数所占用的内存,类似的还有__initdata;*/static int __i
2020-07-29 16:55:18
910
原创 使用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
20549
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
20471
6
原创 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
993
原创 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
1504
原创 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
544
OCPP-1.6-JSON-Specification-中文.doc
2020-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅