- 博客(33)
- 资源 (2)
- 收藏
- 关注
原创 C# 父类实现的 IEquatable<T> 接口,重写的相等性判断函数都能被子类继承
重写相等性判断方法时,如果想让对象能够在哈希表里正常工作,必须也重写 GetHashCode 方法。但是,如果重写了 Equals 方法,不重写 GetHashCode 方法,会导致明明相等的两个对象返回的哈希值不同(因为他们的引用不同),于是哈希表中的两个位置储存了两个相等的对象。在父类重写的 Equals 方法,继承的 IEquatable 接口,重写的 == ,!重写的 Equals 方法也是一种重载。这个重载是每一个 object 的子类都有的,不重写这个方法时比较的是两个对象的引用是否相等。
2023-07-22 17:10:43
383
原创 正点原子STM32MP157烧写官方出厂镜像
将拨码开关拨到000,点击复位按钮,然后烧写器点击连接,然后就可以下载了。同时,点击下方的蓝色Browse按钮,将路径设置为正点原子的固件包目录。使用ST烧写器打开flashlayout目录下的tsv文件。然后将拨码开关拨为010,点击复位,在终端中观察输出。中就是官方出厂镜像。成功启动linux系统。
2023-04-06 23:12:40
731
原创 arctan函数加上90°;arctan(a/b)与arctan(b/a)的关系
arctan函数加上90°;arctan(a/b)与arctan(b/a)的关系
2022-11-06 13:56:05
2569
1
原创 非最小相位系统;频率特性的对称性
最小相位系统的曲线是顺时针运动,非最小相位系统的曲线是逆时针运动。注意看,上面两张图的奈奎斯特曲线对称后箭头都是向上的。可见,关于虚轴对称是连箭头一起对称的。非最小相位系统是相对最小相位系统来说的。它把最小相位系统的频率特性的实部或虚部取反了。可以看到两张图的奈奎斯特曲线关于虚轴对称,且连箭头都一起对称了。可以看到,上面的半圆频率为正,下面的半圆频率为负。可以看到上面的半圆频率为负,下面的半圆频率为正。可以看到曲线在实轴上0刻度的右边。可以看到曲线在实轴上0刻度的左边。
2022-10-31 00:40:12
2461
原创 使用FreeRTOS的Arduino框架把main函数放到哪了
使用 Platform IO 把 setup() 和 loop() 中的 loop 函数删除,点击编译,报了如下错误提示有一个文件调用了一个没定义的 loop 函数。进入到这个文件,这个文件的内容如下#include "freertos/FreeRTOS.h"#include "freertos/task.h"#include "esp_task_wdt.h"#include "Arduino.h"#ifndef CONFIG_ARDUINO_LOOP_STACK_SIZE#define
2022-05-09 12:22:42
655
原创 platformIO放到lib文件夹中的头文件编译时报错找不到
检查文件夹结构首先看README文件,看文件夹组织结构是否正确This directory is intended for project specific (private) libraries.PlatformIO will compile them to static libraries and link into executable file.The source code of each library should be placed in a an own separate dire
2022-05-03 17:13:24
2271
1
原创 C++判断一个类是否是第一次实例化
可以对构造函数下手。构造函数一开始先判断。为什么会有这种需求呢?我有一个类是用来维护wifi连接的,但是wifi模块只有一个,所以只允许有一个实例化对象控制wifi模块。所以当这个类被多次实例化时要知道,并且采取措施防止第二个实例对象去控制wifi模块可以在构造函数中生命一个静态变量作为标志。ConnectWifi::ConnectWifi(void){ static bool bFirst = true; /*先判断是不是第一次被初始化,改类只允许有一个实例化对象*/ if
2022-04-26 21:54:22
1403
原创 msp430f5529 中断向量的宏定义
这一段宏定义位于 msp430f5529.h 的最后面#ifdef __ASM_HEADER__ /* Begin #defines for assembler */#define RTC_VECTOR ".int41" /* 0xFFD2 RTC */#else#define RTC_VECTOR (41 * 1u) /* 0xFFD2 RTC */#endif#i
2021-12-20 19:08:54
950
原创 圆周运动、一般曲线运动、阿基米德螺旋线
恒长旋转向量的导数一个恒长旋转向量求导后得到的向量的方向与原向量相比,逆时针旋转了 90∘90^\circ90∘ ,而求导后得到的向量的长度与旋转角速度有关。证明例如 a⃗=(cos θ,sin θ)\vec{a}=(cos \ \theta, \quad sin \ \theta)a=(cos θ,sin θ)1、对 θ\thetaθ 求导da⃗dθ=(−sin θ,cos θ)=[cos(θ+π2),sin(θ+π2)]\frac
2021-08-02 12:41:55
1851
原创 定时器A增计数模式产生中断使LED灯闪烁
增计数模式用户手册464页设置捕获比较寄存器 CCR0 的值,定时器增计数到 CCR0 的值时,下一个时钟周期的上升沿到来时会清零,重新计数。这种模式下会发生两种中断一种是计数值达到 CCR0 时产生 CCR0 中断,另一种是计数值变成 0 时产生定时器中断,由 TAxIV 代理请求。使用 CCR0 中断#include "driverlib.h"#define FRE_DCO 6400 //DCO的频率,单位为KHZ#define TPR 10000 //定..
2021-06-28 22:23:02
833
原创 F5529 定时器 A 中断
定时器A有两个中断向量CCR0 的中断向量 TAxIV 的中断向量。TAxIV 是中断管理器,类似 8259 芯片。除了 CCR0 以外的 CCRx 的中断和 TAx 的中断都由 TAxIV 代理请求,它们自己不能直接请求。TAxIV占用一个中断向量,而不是多个。无论哪个中断源产生中断,进入的都是同一个中断服务程序。这时候要在中断服务程序中查询 TAxIV 寄存器的值来判断是哪个中断源引起中断,然后执行相应的程序。在 C 语言中可以使用 case 语句。TAxCCR0 CCIFG的优先级最高。在
2021-06-28 21:51:54
698
原创 卷积与多项式乘法的关系
clc;clear;syms ss1=s^2+s+1; %创建两个多项式s2=2*s+5;sp1=sym2poly(s1); %把这两个多项式转换成系数向量sp2=sym2poly(s2);sp=conv(sp1,sp2) %计算两个系数向量的卷积ss=s1*s2; %计算两个多项式的乘法ss=collect(ss,s) %展开括号,按降幂排列结果如下sp = 2 7 7 5 ss = 2*s^3 + 7*s^2 + 7*s + 5
2021-06-04 12:00:02
1800
原创 用自动控制理论分析电力电子中的基本斩波电路
傅里叶级数 - 用自动控制理论分析斩波电路的基础把方波展开成傅里叶级数如果方波输入到一个低通滤波网络中,且基波分量频率就很高了,被衰减得很厉害,高次谐波频率是基波得几倍,更不用说了,于是方波输入到低通滤波网络中相当于一个阶跃信号输入到低通滤波网络中。其他周期信号也是如此。电感的输入电压可以用傅里叶级数展开所以,电感输入电压的谐波分量会被衰减,所以当电感输入电压为方波时,可以用阶跃信号近似。电容的输入电流可以用傅里叶级数展开bode 图如下所以,电容输入电流的谐波分量会被衰减,所
2020-12-18 22:49:40
1707
1
原创 用EMU8086实现段间远调用
STACK SEGMENT STACK STAPN DW 32 DUP(0)STACK ENDS DATA SEGMENT ADDRESS DW 2 DUP(?) ;定义双字变量用来存放远跳转的CS:IPDATA ENDSCODE2 SEGMENT SET_BX:MOV BX,1234H RETFCODE2 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:M
2020-11-04 18:32:13
708
原创 各种DAC的输出电压详细版
权电阻网络DAC如图为什么运算放大器要从反相输入端输入输出等比数列前 n 项和公式各种DAC的输出电流与数字信号的关系其中,n都表示为数字信号输入端的位数权电流型权电流型DAC要外加负的电压源:VEEV_{EE}VEE恒流源的结构和电流大小输出电压之后的更低位的电流源的电流依次减半。书上的芯片把IREFI_{REF}IREF的运算放大器包含在芯片内了,只要提供电阻RRR_RRR和VREFV_{REF}VREF就行了.开关树型权电容型总结..
2020-08-17 23:59:34
7246
原创 555 定时器的时间计算
作为单稳态电路时的暂稳态时间计算接下来就要用电容的全响应公式计算充电时间了,公式推导见:拉普拉斯变换及元件的拉普拉斯变换模型
2020-08-16 00:44:35
9620
原创 555 定时器的 3 种用法判断和解释
文章目录引脚图用法判断作为单稳态电路时作为多谐振荡电路时引脚图用法判断如果不需要自定义回差电压,5 引脚都通过 0.01uF 的电容接地,用来滤波,抗干扰。所以 5 不影响 555 定时器的用法首先看 7 是否悬空,如果悬空,则是作为施密特触发器;没有悬空,而是一条路通过一个电阻连接到 VCCV_{CC}VCC,另一条路直接连着一个电容或通过一个电阻连接着电容,则是作为单稳态电路和多谐振荡电路。判断为单稳态电路或多谐振荡电路后,再看 2 和 6 引脚是否连在一起,如果 2 和 6 连在一起,
2020-08-15 23:49:58
5722
原创 MFC 创建非模态窗口
在主对话框中点击一下按钮就创建出一个非模态对话框,那么问题来了,再次点击按钮是要再次创建一个非模态对话框出来呢还是不允许创建?只能创建一个代码void CMFCDlgFirstDlg::OnBnClickedButton2(){ BOOL bRet = FALSE; static CFMTDialog* pFMTDlg = NULL; if (!pFMTDlg) { pFMTDlg = new CFMTDialog(); } if (!pFMTDlg->m_hWnd || !
2020-07-27 00:01:11
1019
原创 CString 和其他类型字符串的转换
MSDN 链接CString 和其他类型字符串的转换把 CString 赋值给 std::string第一种把 CString 强制转换成 CStringAclass 十进制转二进制{private: unsigned int temp = 0;//临时存放变量的无符号整型,用来给bitset使用public: CString strinput;//用户输入的字符串 CString stroutput;//输出结果的字符串 void 转换();};void 十进制转二进制::
2020-07-26 14:29:50
291
原创 C++输出二进制数
示例#include<windows.h>#include<sstream>#include<atlstr.h>#include<bitset>using namespace std;int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow){ DWORD dword = GetLogicalDrives(); stringstream
2020-07-21 10:35:09
4025
原创 GetLogicalDrives
示例#include<windows.h>#include<sstream>#include<atlstr.h>#include<bitset>using namespace std;int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow){ DWORD dword = GetLogicalDrives(); stringstream
2020-07-21 10:34:54
500
原创 递归的思想
使用该思想快速写出递归函数,不用模拟计算机一级一级地算。思想递归就是是假设下一级已经有一个函数做好了,我只要做好这一级,并向上级汇报就行了,然后找出最低级的停止递归的条件。这里说的一个函数就是这个函数本身。例子1. 阶乘如用递归求n的阶乘时,假设已经有一个函数叫fac,给它n-1,它就会把n-1的阶乘求好并返回,我现在只需要把n乘上fac的返回值,然后把结果返回(就是向上级汇报)就够了,那递归什么时候停止呢?就是当n=1时,就没有下一级了,这时候返回1的阶乘,就是1.代码如下#include&
2020-05-16 12:27:50
125
原创 动态内存分配
动态内存分配和释放的方法int main(void){ int* p = new int; *p = 4; delete p; char* b = new char[4]; delete[] b; return 0;}单个变量的内存空间释放用delete,数组的内存空间释放用delete[]。使用new <类型>开辟内存空间后,new返回的是一个地址,这个地址要用一个指针保存起来才不会丢失。这就是为什么会有下面两句int* p = n
2020-05-13 01:17:04
144
原创 引用变量
功能引用就是给一个已经定义的变量取一个别名,例如int main(void){ int a = 5; int& b = a; cout << b; return 0;}输出为:5使用&运算符,给a一个外号b,就可以把b当作a来使用了,a和b在内存上占用同一块区域,引用并不会创建新的内存空间。就像使用指针那样。上面的操作等价于int main(void){ int a = 5; int* b = &a;
2020-05-12 23:26:18
208
原创 递归法求一组数的最大值
#include<iostream>using namespace std;int max(int* a, int left, int right){ int mid = (left + right) / 2; if (left == mid) { if (a[left] > a[right]) return a[left]; else return a[right]; } else { if (max(a, left, mid) > ma
2020-05-11 00:21:16
465
原创 用递归法判断数组中的数是否为回文
#include<iostream>using namespace std;bool hui_wen(int* a, int left, int right){ if (left >= right) { if (a[left] == a[right]) return true; } else if (a[left] == a[right]) { if (hui_wen(a, left + 1, right - 1)) return true; el
2020-05-11 00:09:07
504
原创 MSP430F5529实现LED1无极调光
概述使用TA0的比较模式输出方波,驱动LED1.方波的频率较小时用相机拍摄LED时会发现在闪烁,为了让相机不能发现LED在闪烁,使用25MHz的时钟源。通过DCO-FLL得到。机械按键会抖动,使用TA1定时扫描按键,消除抖动。英文注释部分是code example经过修改的代码#include <msp430.h>void SetVcoreUp (unsigned ...
2020-01-20 17:58:44
1089
原创 Deepin如何添加阿里源
进入阿里开源镜像站:https://opsx.alibaba.com/mirror找到deepin点击右侧的帮助,出现如下图所示界面打开终端,输入sudo vim /etc/apt/sources.list点击键盘上的insert键,把帮助中的地址复制进去,按Esc退出,输入冒号加w写入,冒号加q退出,然后输入sudo apt-get update...
2019-09-07 10:58:37
5777
MSP430F5xx_6xx_DriverLib_Users_Guide-2_91_13_01.pdf
2020-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人