自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (15)
  • 收藏
  • 关注

原创 Keil编译器上Link-Time Optimization的作用

做个记录,明天开始写I2C 总线组成; I2C设备的原理图; I2C 是怎么工作的; I2C 读和I2C 写; 代码分析; 遇到哪些问题;

2024-09-27 19:23:38 103

原创 Keil编译器上Link-Time Optimization的作用是什么

总的来说,Link-Time Optimization 在 Keil 编译器中主要的作用是通过在链接阶段进行全局的优化,提升代码执行效率、减少代码冗余和可执行文件的体积,以及优化内存和计算资源的使用。:通过将各个编译单元的优化提升到链接阶段,LTO 可以让编译器在全局范围内执行更多复杂的优化技术,例如跨模块的函数内联、指令调度、数据流分析等。:通过全局分析,LTO 可以生成更加优化的代码路径,减少不必要的函数调用、分支和其他运行时开销,从而提高程序的执行速度。

2024-09-27 19:07:02 264

原创 字节不对齐导致的HardFault

假设你有一个32位(4字节)的整数,而它的内存地址需要是4的倍数才能保证对齐访问(即地址为0x0000、0x0004、0x0008等)。在Cortex-M0这种不支持非对齐访问的处理器上,上面的代码将会导致HardFault,因为处理器期望32位数据存储在4字节对齐的地址(即地址是4的倍数)。非对齐访问造成的HardFault并不只限于Cortex-M0单片机,其他基于ARM架构的处理器也可能出现类似的问题。在这个例子中,地址 0x1000 是4的倍数,因此这是一个对齐的访问,处理器可以高效地读取数据。

2024-09-27 10:37:34 899

原创 PMOS的原理

PMOS

2024-09-26 20:20:15 482

原创 NMOS的原理

当G极电压足够高且D极电压较高时(V_GS > V_th 且 V_DS较大),通道饱和,电流达到最大值,进一步增大V_DS不会显著增加电流。在饱和区,NMOS用于放大器等需要稳定电流输出的场合。:当G极电压高于阈值电压且D极电压较低时(V_GS > V_th 且 V_DS较小),通道完全打开,电流线性地随着V_DS增大而增大。此时NMOS像一个可变电阻器。:当G极电压低于阈值电压(V_GS < V_th),NMOS处于截止状态,通道未形成,S极和D极之间没有电流流动。

2024-09-26 20:18:54 474

原创 不吐不舒服斯基,记一下VC6的编译出错问题 unexpected end of file found

今天下午在改一个程序,加了几句代码之后编译一下,报了错误:报了错:fatal error C1004: unexpected end of file found根据经验看是少了大括号之类的,仔细看了下好像也没有少,看了至少五六遍,没有少啊,加入的代码移了位置导致的?各种换位置验证。搞了大概有一个小时了(其实没有,只是你知道在这种情况下好像感觉搞了很久)最后一行一行去删掉编译,我真的 很庆幸程序不是很大,编译时间不需要太久,要不真的想骂死Microsoft VC6.0的工程师的心都有了。

2021-02-10 16:18:31 1536

原创 Linux 基于C的线程池实现

首先这个线程池不是我写的,是在git上找到的星标最多的

2021-02-09 15:40:43 293

原创 sigslot 库的用法

这里还是网友的一个经典例子,light和switch例子#include <iostream>#include "sigslot.h"class CSwitch{public: sigslot::signal0<> m_clicked;};class CLight:public sigslot::has_slots<>{public: CLight(bool s) { m_b_state = s; DisplayState(); }.

2021-01-25 03:55:33 520

原创 GD32 JTDI脚的复用问题

项目上有用到JTDI这个脚,复用做GPIO当时没有注意,直接用做了GPIO,一直无法控制这个Pin最后看了SPEC,发现这个默认是JTDI脚Default JTDI如果要用做GPIO的话(也就是PA15)的话要用REMAP的方式,这个顺序不要变,之所以这么说因为有网友在STM32上验证说:必须先打开时钟再Disable才可以 rcu_periph_clock_enable(RCU_AF); rcu_periph_clock_enable(RCU_GPIOA); gpi.

2021-01-21 11:58:14 2690 7

原创 GD32 ADC检测电压

GD32的参考电压在规格书上没有查到,但是由于GD32 和STM32的“某种关系“。。。STM32 的内部参考电压是1.2V,所以GD32的可以想象也是1.2V。(最终通过计算发现确实应该是1.2V)

2021-01-21 11:46:21 10533

原创 OninitDialog和OnCreate

如果你想在窗口创建的时候,指定哪些控件显示,哪些控件不显示,那么选择重写OninitDialog,它是CDialog的成员函数CDialog::OnInitDialogMSDN示例代码:BOOL CSimpleDlg::OnInitDialog(){ CDialog::OnInitDialog(); // TODO: Add extra initialization here m_cMyEdit.SetWindowText(_T("My Name")); // Initia.

2021-01-12 22:34:56 519

原创 MFC用户线程的创建以及退出

公司的生产测试工具用了N多年了。N多年的是多少年?不知道是不是现在的一些小同学还不知道VC6.0(还不知道可能不妥,仅仅调侃,无意冒犯,应该说是没用过),生产测试工具当时还是用VC6.0开发的,感觉这和现在去打仗用的还是清朝的“神威无敌大将军”一样。所以,我这个起步VC6.0,但是又半路出家的程序猿再恶补一下当年丢下的东西。工具的UI和功能其实都很简单,但是要优化的地方也是很多。今天只说一下涉及到UI线程也就是界面线程部分,因为真正的测试工具的功能比多,这里仅仅用demo的方式记录一下自己恶补的一些

2021-01-11 16:47:42 889 6

原创 如何确认目前的你所用的MYSQL数据库的引擎

如何确认目前的你所用的MYSQL数据库的引擎看你的mysql现在已提供什么存储引擎:mysql> show engines;看你的mysql当前默认的存储引擎:mysql> show variables like '%storage_engine%';你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):mysql> show create table 表名;mysql> show variables like '%sto...

2020-12-11 18:02:55 167

原创 beyond compare 编码错误

工具->文件格式->转换-> 编码 选择GB18030简体中文基于你的错误编码是中文编码导致的。

2020-07-14 13:57:12 1534 1

原创 将中断向量表定位到RAM中,从RAM中引导执行中断服务

最近在解决一个问题,看到一篇代码,将中断向量表定位到RAM中,代码所在的文章在这里:https://www.silabs.com/community/mcu/32-bit/knowledge-base.entry.html/2017/05/09/emu_e110_-_potential-i2Pn大家都知道,MCU的中断向量表通常是在flash的0x00000000地址,这一点从你编译...

2020-04-27 11:53:05 5311

原创 μcos-II的任务调度

看到了一位网友的博客,感觉说的比较好,就Copy过来了主要是之前知道任务调度是调用OS_Sched,但是没有看到这个函数的具体实现,或者说看过这个实现没有意识到是利用软中断来对当前任务做现场保存的。这里对接上了,昨天晚上还嘀咕着是不是这么做的,看来果然是啊。//任务调度//uCOS-II总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高,下面该哪个任务运行了...

2020-03-27 09:51:15 600

原创 MCU 跳入到SystemInit之后就不往下走了

刚在测试一个USB的小例子的时候,下载好了之后,调试发现跑到startup_gd32e10x.s的SystemInit之后就不动了。;/* reset Handler */Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT...

2020-03-14 17:46:41 1678

原创 system_gd32e10x.c分析

/*! \brief setup the microcontroller system, initialize the system \param[in] none \param[out] none \retval none*/void SystemInit (void){ /* FPU settings */ /* 如果要使用户...

2020-03-14 14:00:49 3217

原创 SPI + DMA

说一说DMA是什么东西,DMA本身的意思是Direct Memory Access,直接存取访问,可以看到这只是一种存取方式,或者说读写方式,或是直白点来说,就是直接读取,说的太直白了,感觉这个DMA这个词在脑子里感觉有点SB了,就这么一个破烂玩意儿起这个这个类似遇到DNA一样的玩意儿。直接存取或者直接读取写入什么呢?当然是数据了,从哪里读,或者往哪里写呢?这个问题好,后面会说到读取的位置...

2020-03-08 21:58:45 11485 4

原创 SPI Flash读取操作

今天看到有人在问SPI flash读取数据的方法,为什么这样读取?先给出一个函数,SPI的读取函数:/*! \brief read a block of data from the flash \param[in] pbuffer: pointer to the buffer that receives the data read from the flash...

2020-03-06 21:04:36 6072 12

原创 GD32 starup_gd32e10x.s分析

;/*!; \file startup_gd32e10x.s; \brief start up file;; \version 2017-12-26, V1.0.0, firmware for GD32E10x;*/;;/*; Copyright (c) 2017, GigaDevice Semiconductor Inc.;; ...

2020-03-05 14:43:15 1166

原创 keil error:#8:missing closing quote 处理

在KEIL中Options for Target 'Flash' -> C/C++ -> Misc Controls添加“--locale=english”。原因:MDK5采用UTF-8,提示很多个这样的error:#8:missing closing quote 的错误信息。提供以下几种方式解决:第一种: 把报错提示的文件(包括.c和对应.h)用Notep...

2020-02-14 10:37:26 1035

原创 python 获取 指定文件下的所有文件名的绝对路径

import osresult = []def get_all(path): dir_list = os.listdir(path) for i in dir_list: sub_dir = os.path.join(path,i) if os.path.isdir(sub_dir): get_all(sub_dir)...

2019-12-31 10:49:34 2351

原创 Python使用FPDF导出字体 widths array

新建FontDump工程,import FPDF库。File ->Setting->Projcet:FontDump->Projcet Interpreter->Double click pip 新建FontDump.py文件,导入库FPDF 怎么知道FPDF的所有函数或者说方法呢?看下刚刚下周的库到我们的工程目录下D:\Python\FontDump\env\Lib\...

2019-12-07 17:43:20 779

原创 libharu-RELEASE_2_3_0编译

下载最新的libharu :http://libharu.org/ 网址贴下,可以去下载最新的版本,我这里是2_3_0的版本; 编译libharu要用到zlib和libpng,所以我也从对应的官网上下载:zlib(http://www.zlib.net/),libpng(http://www.libpng.org/pub/png/libpng.html) 先编译zlib,在zlib-1.2.1...

2019-12-05 09:27:05 781

原创 zlib解压 被压缩的PDF(关键字FlateDecode)

PDF被压缩了,但从网上看这个压缩算法就是zlib的压缩算法,下面的乱码就是压缩导致的乱码,现在需要把这些乱码复原%PDF-1.7%溷弦4 0 obj<</Length 3 0 R/Filter/FlateDecode>>streamx渆QMK聾}&跉MIb郦Q鰳娵R刍??焱zR<?|3狣B6?颿f?滕,鞃?珈毵辊纡拶迨鷚#Ef? B?]蔑...

2019-12-04 17:29:49 4993

原创 Stack Overflow无法提交问题

StackOverflow无法提交问题,是因为缺少某些插件按照这位网友的方案,可行为什么会出现“Stack Overflow requires external JavaScript from another domain, which is blocked.."?...

2019-11-30 12:40:35 514

原创 主线程中等待子线程结束

void CATCommandDlg::OnButtonStart() { //YH012000000006 UpdateData(); char strMcu[100]; DWORD dwThreadID; memset(strMcu,0,100); ShowCalResult(Testing); UpdataClear(1); if (!CheckSNIMEIBT()) ...

2019-11-26 21:23:33 566

原创 MFC post-build step

MFC 中Setting标签下,有Post-build stepcopy Debug\xxx1.3.5.exe . /y​​​​​​​会在编译生成exe之后,把这个xxx1.3.5.exe的程序copy到上一级目录下

2019-11-09 15:31:38 250

原创 MFC 判断当前输入法是中文输入法

HKL hkl = GetKeyboardLayout(0);if(ImmIsIME(hkl)) AfxMessageBox("当前是中文输入法");需要包含头文件,并且连接库#include <imm.h>//ImmIsIME#pragma comment(lib, "imm32.lib.")...

2019-11-09 11:40:15 1512

原创 MFC 设置对话框在顶层窗口

BOOL CInput::OnInitDialog() { CDialog::OnInitDialog(); ........ /* * 设置窗口为顶层窗口 */ this->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE); return TRUE; // return TRUE...

2019-11-09 11:00:13 1405

原创 往当前内核添加驱动程序

接上前面编译内核的文章内核编译好了之后,自己要往内核中添加自己的驱动程序,如果加呢?选择一个目录加入自己的驱动文件nasri@ubuntu:~/Work/linux-source-3.13.0/$ 因为前面编译内核是在上面这个目录下编译的所以就在这里添加自己的驱动文件,在driver/char 下创建一个目录nasritestnasri@ubuntu:~/Work/li...

2019-11-07 00:55:21 1482 2

原创 vmstat 命令

除了top之外,vmstat也可以查看系统的一些信息nasri@ubuntu:~$ vmstat -S Mprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in ...

2019-11-05 23:14:03 222

原创 ubuntu 更换内核之后全屏是黑屏,提示could not set the configuration for CRTC 63

用VMware更换了3.13的内核,开启虚拟机,运行ubuntu之后发现全屏状态下是黑屏不全屏就可以正常显示,但是弹出一个对话框提示“could not set the configuration for CRTC 63”用命令查下当前内核支持的分辨率nasri@ubuntu:~$ sudo xrandrScreen 0: minimum 1 x 1, current 800 x ...

2019-11-05 22:55:55 2850 1

原创 编译ubuntu内核

看了《奔跑吧 Linux 内核》的书,感觉内存管理这一部分后面的例子不错,就想手敲一遍体验一下例子(自己对这方面感觉一直云里雾里)nasri@ubuntu:/usr/local$ apt-cache search linux-sourcelinux-source - Linux kernel source with Ubuntu patcheslinux-source-3.13.0 ...

2019-11-03 18:13:49 508

原创 PyQt5 + Excel 读写操作 + 扫码枪检测

import osimport sysimport timeimport datetimeimport tracebackimport xlwtimport xlsxwriterimport xlrdimport tracebackfrom xlutils import copyfrom PyQt5 import sipfrom PyQt5.QtGui import QIc...

2019-09-20 14:39:57 4849 2

原创 GPRS测试服务端

项目是通过设备的GPRS和服务器端连接,然后把当前的时间发送到设备端这里只是服务端的代码import osimport sysimport timeimport tracebackimport http.clientimport selectorsimport socketfrom datetime import datetimefrom PyQt5.QtGui impo...

2019-09-17 18:39:35 514

原创 使用Pyinstaller 打包PyQt5程序

打包操作pyinstaller --hidden-import=PyQt5 gprs_test_server_ui.pyD:\Python\GPRS_Test_Server>pyinstaller --hidden-import=PyQt5 gprs_test_server_ui.py163 INFO: PyInstaller: 3.4164 INFO: Python: 3.7.3...

2019-09-12 18:24:21 602

原创 Python 做一个高并发的GPRS测试服务端

公司的设备需要做一个GPRS的测试测试的时候将服务器端的时间写入到设备这样一来测试了GPRS的功能,二是将最新的时间同步到了设备设备端当然就是客户端了,那需要写一个支持高并发的服务器端查了下asyncio是一个不错的库,不过这个对我来说没有必要(确切来说我不懂怎么样用哈哈哈哈)所以就用selector做一个简单的支持高并发的服务端了就和网络上大多数例子一样,如果你看了我下面...

2019-09-10 14:41:22 562

原创 Python module 'asyncio' has no attribute 'get_event_loop'

D:\remote_git\iot_tool\download_tool\concurrent\Scripts\python.exe D:/Python/concurrent/asyncio2.pyTraceback (most recent call last): File "D:/Python/concurrent/asyncio2.py", line 1, in <module...

2019-09-10 13:50:38 1742

sigslot.h 对象之间发送和接收消息的机制

sigslot的头文件,sigslot.h 包含了sigslot的实现

2021-01-25

MFC用户线程的创建以及退出

主要展示MFC用户线程的创建和安全退出,一个小的demo历程

2021-01-11

HF_FullRAM_Vect_LG.zip

EFM32 LG中从RAM重引导中断服务。是为了解决从EM2唤醒之后,在读取flash上代码时候有问题,导致唤醒中断无法执行,导致系统重启

2020-04-27

GD32E10x_User_Manual_CN_V1.0.pdf

GD32 MCU User manual 中文版。这里对照的是CSDN博客中的文章。主要是外设的一些介绍,适合各个开发阶层的工程师,当然这个是Cortex-M的内核,基于此内核的MCU我觉得都差不多,可以参考看看

2020-03-14

libharu+lpng+zlib

压缩包是libharu,libpng zlib的集合,通过这些可以编译生成对应的库用在PDF的生成上。

2018-10-26

一个关于注册表和串口COM操作的小程序

VS2010开发的一个自动找串口和串口操作的小程序,CCOMOperator参考cnCom.h写的。另外还有一个CRegisterOperator的类。以后自己做类似程序参考使用

2018-10-21

Si4438C datasheet

Si4438是Silicon Labs专门针对中国ISM频段推出的无线射频芯片,其频率范围是425MHz ~525MHz。由于其高射频性能、低功耗以及高性价比等特点,在无线抄表、智能报警以及远程监控等市场被广泛使用

2018-10-08

liabcoap 源码

coap源码是物联网用的比较多的协议,相对于mqtt,有其自身的优势,这份源码我感觉还是比较不错的!

2018-10-08

IAR7.x所需要的,IAR 8.2可以尝试破解文件

IAR 7.8的破解文件,IAR8.2上可以尝试破解,我的一台电脑可以,一台不行。不知道什么原因。大家可以尝试一下。 放错了,怎么撤销????不好意思

2017-11-28

采用Hook钩子注入DLL.

这里采用了HOOk钩子注入DLL,不过出现了错误,大佬帮忙查看下哪里出错了。

2009-08-26

DIB到DDB位图的转换和百叶窗效果

用CreateDIBitamp函数和LoadImage函数实现DIB到DDB位图的转换和百叶窗效果。

2009-08-09

SQL Server 2000简明培训教程.rar

SQL Server 2000简明培训教程.rar SQL Server 2000简明培训教程.rar

2008-11-25

信息技术竞赛辅导,是EXE文件的

信息技术竞赛辅导.exe 这是EXE文件版的。里面语言是Pascal的

2008-11-16

Ubuntu入门教程.chm

Ubuntu入门教程

2008-07-30

空空如也

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

TA关注的人

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