- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 MFC显示BMP、PNG、JPG图像
加载和显示//【1】加载图片CImage image_src, image_dst;image_src.Load(_T("./res/Windows_Logo_1995.png"));//【2】设置控件为位图模式、居中显示picture.ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);//【3】对原图像进行尺寸变换CRect rect;picture.GetWindowRect(rect);CreateStretchImage(image_src
2020-12-13 20:55:35
799
原创 使用MFC实现单窗口显示
MFC实现单窗口显示步骤:创建应用类和窗口类,以及窗口类的构造函数。编写入口函数virtual BOOL InitInstance();,实现窗口的创建、显示和更新。建立消息映射表,编写处理消息所需的回调函数。头文件#pragma once#include <afxwin.h>// 应用程序类class MyApp : public CWinApp{public: // 程序入口 virtual BOOL InitInstance();};// 窗口框架类c
2020-12-11 21:02:53
853
原创 win32方式实现单窗口显示
win32实现单窗口显示步骤:设计,配置窗口属性。注册,注册一个窗口类,据此创建窗口。创建,创建重叠、弹出或子窗口。它指定窗口类、窗口标题、窗口样式,以及(可选)窗口的初始位置和大小。显示和更新,设置指定窗口的显示状态并更新指定窗口的工作区。通过循环取消息,从调用线程的消息队列中检索消息。编写回调函数(窗口过程),处理发送到窗口的消息的应用程序定义的函数。/** * win32方式实现ui */#include <windows.h> // windows.h 尽量在第一
2020-12-11 20:46:46
570
原创 批处理删除文件夹
使用DOS指令编写批处理文件来删除指定名称的文件夹。例如Visual Studio 2019生成的工程目录下有很多.vs文件夹,会占用很多内存,如果有很多个VS工程中的.vs文件夹想删除,通过批处理指令可以实现快速删除。效果:...
2020-12-07 15:48:36
1372
1
原创 Linux(二):GPIO
作为一个硬件出生的程序员,第一个要关心的肯定是GPIO,FriendlyARM官方已经提供了GPIO库,只需要下载-编译即可使用。GPIONanoPi M1 Plus GPIO wiki链接可以看出Pi提供的接口还是比较丰富的,我将要使用其中4个GPIO点亮一个彩色OLED屏。WiringPi安装wiringPi库最早是由Gordon Henderson所编写并维护的一个用C语言写成的类库,除了GPIO库,还包括了I2C库、SPI库、UART库和软件PWM库等,由于wiringPi的API函数
2020-11-29 20:33:19
274
原创 Linux(一):初识ARM Linux
在实验室学习了两年的51和32,也凭借C8T6拿了不少奖,我自认为对单片机已经有所了解,一直想进入ARM Linux领域去学习,了解更多有关嵌入式与计算机的知识,因此在淘宝花了300大洋买了一块NanoPi M1 Plus开发板,我的Linux学习之旅也就此开始,希望有始有终。NanoPi M1 PlusNanoPi M1 Plus wiki网址开发板简介:NanoPi M1 Plus采用了全志四核A7高性能处理器Allwinner H3,配备1G DDR3内存和8GB eMMC高速闪存,集成Wi
2020-11-28 21:42:06
2443
原创 STM32CubeIDE(一):配置工程并开启SWV调试
硬件平台:野火霸天虎开发板(STM32F407ZGT6)软件平台:STM32CubeIDE 1.5.0调试器:ST-Link/V2工程配置1、创建工程2、选择芯片3、配置工程CubeMX配置1、选择外部晶振2、配置Debug接口(SWV)此处不能选择Serial Wire,否则无法开启SWV3、配置时钟根据配置生成源文件成功工程文件结构SWV(Serial Wire Viewer)STM32CubeIDE支持SWV/ITM的显示功能ST官方对SWV的描述
2020-11-22 22:41:04
7505
7
原创 蓝桥杯嵌入式组(九):输入捕获
蓝桥杯嵌入式组(九):输入捕获通过 PA1 - TIM2_CH2、PA2 - TIM2_CH2 捕获外部输入的PWM代码:void PWM_Capture_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; NVIC_InitTypeDef NVIC_InitStruct
2020-11-20 19:44:39
650
2
原创 蓝桥杯嵌入式组(八):PWM输出
蓝桥杯嵌入式组(八):PWM输出通过 PA7 - TIM3_CH2 输出一路PWM。代码:/** * PWM初始化 * 频率:0 - 10K Hz,默认1000Hz * 占空比 0.0 - 1.00,默认50% */void PWM_TIM3_CH2_Init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; GPIO_InitTypeDef
2020-11-20 18:48:46
732
原创 蓝桥杯嵌入式组(七):DS18B20
蓝桥杯嵌入式组(七):DS18B20DS18B20是一种单总线温度传感器,蓝桥杯选手资料包提供了底层驱动,实现逻辑需要手写。代码:float DS18B20_GetValue(void){ uint8_t val[2] = {0}; int16_t x = 0; float temp = 0; _disable_irq(); ow_reset(); ow_byte_wr(OW_SKIP_ROM); ow_byte_wr(DS18B20_CONVERT); Delay_us(500
2020-11-14 00:26:00
428
原创 蓝桥杯嵌入式组(六):多路AD采集
蓝桥杯嵌入式组(六):多路AD采集蓝桥杯板(主板+拓展板)共有3路ADC采集口,分别是PA4(ch4)、PA5(ch5)、PB0(ch8)。代码:void ADC_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(R
2020-11-14 00:13:17
643
原创 蓝桥杯嵌入式组(五):AT24C02
蓝桥杯嵌入式组(五):AT24C02AT24C02原理图:IO对应关系:SCL => PB6SDA => PB7代码:static void AT24C02_Delay(void){ uint32_t i = 0x10000; while(i--);}void AT24C02_Write(uint8_t addr, uint8_t* src, uint8_t len){ I2CStart(); I2CSendByte(0xA0); I2CWaitAck(
2020-11-13 01:05:43
336
原创 蓝桥杯嵌入式组(四):按键
蓝桥杯嵌入式组(四):按键按键原理图:IO对应关系:Button1 => PA0Button2 => PA8Button3 => PB1Button4 => PB2非阻塞式代码:struct _KEYType { uint32_t Value; uint32_t LastTime; bool Status;}K[4];void Button_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; TIM_
2020-11-13 00:05:49
517
原创 蓝桥杯嵌入式组(三):LED
蓝桥杯嵌入式组(三):LEDLED通过74HC573锁存器控制IO对应关系:LE(高电平使能) => PD2D0-D7(数据)=> PC8 - PC15代码:/* LED初始化 */void LED_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = 0xFF00; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MH
2020-11-12 23:49:49
197
原创 蓝桥杯嵌入式组(二):串口
蓝桥杯嵌入式组(二):串口串口是一个重要的现场调试工具,蓝桥杯板上提供的USB通过FT2232连接至USART2。/* USART2初始化 */void USART2_Init(uint32_t baud){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitStructure.GPIO_Pin
2020-11-12 23:20:28
320
原创 蓝桥杯嵌入式组(一):时基
蓝桥杯嵌入式组(一):时基通过SysTick定时器提供时间基准,通过此时基可以实现精准延时,并且为状态机的实现提供时间基准。#include "stm32f10x.h"/* 定时相关宏 */#define TickPerSecond (1000)#define usPerTick (1000000/TickPerSecond)/* 时间变量 */volatile uint32_t SystemTime = 0;/* 定时器中断间隔1ms */SysTick_Config(SystemCo
2020-11-12 23:06:57
290
原创 Win10下QT生成的可执行文件无法运行
Win10下QT生成的可执行文件无法运行问题描述出现警告:This application failed to start because it could not find or load the qt platform plugin windows···原因原因是当前目录下缺少运行所需的dll库(大部分是QT的动态链接库)。解决方法使用QT自带的依赖包分析程序windeployqt.exe对目标程序分析,该程序会自动添加所需的dll库。在控制台输入如下命令:QT安装目录\QT版本号\编译
2020-06-15 21:54:19
2041
原创 51汇编(八):外部中断
中断中断是一种计算机内部机制,常用于处理突发事件(优先级高的事件)。下图是中断机制的原理图,计算机自动检测五个中断标志,判断是否有中断请求,再判断是否允许响应该中断请求,最后去执行中断响应函数。我们可以把中断机制理解为一间房子,首先我们需要记住两道门:小门和大门。小门有五扇,指的是5个源允许位;大门只有一扇,指的是总允许位。大门不开,谁都进不来,大门开了,小门锁上,对应的房间也进不去;因此只有当大门和小门同时打开,才能完成一次中断响应(中断允许)。其次这房子还有一个特点,就是同一个时间只能进去一个人
2020-05-11 17:50:57
5228
1
原创 51汇编(七):按键检测
按键检测原理按键相当于一个开关,一端连接单片机IO,一端接地;将单片机IO置高,当按键按下的时候相当于开关闭合,单片机IO接地,IO电平为低;因此,当单片机检测IO电平为低时,则代表按键按下。检测程序按键检测程序需要注意松手检测,因为单片机检测速度非常快,按下按键这个动作可能会被检测到N次,因而执行N次响应代码,如果我们需要按一次,执行一次响应代码,就需要检测松手动作,即按键弹起。FLA...
2020-05-06 15:35:19
6369
3
原创 C++:友元
友元友元函数/类可以访问类的私有成员。class A { friend void changePrivateNum(A* tempClass, int num);private: int privateNum;public: int publicNum;public: A() { privateNum = 0; publicNum = 0; } void showM...
2020-05-03 18:40:28
117
原创 C++:常对象和常函数
普通成员函数后添加const后缀则成为常函数,常函数不能修改非mutable修饰的成员变量。const修饰的对象是称为常对象,常对象的非mutable成员变量不能够被修改,且不能调用非常函数。...
2020-05-03 18:08:35
351
原创 C++:静态成员变量和静态成员函数
静态成员变量在内存中只有一份,不依附于类的实例,需要在类的外部初始化。静态成员函数内部只能操作静态成员变量,不依附于类的实例化,可以通过对象和类名调用。...
2020-05-03 17:42:11
144
原创 C++:构造函数
文章目录构造函数构造函数构造函数四要素:无返回值函数名与类名相同参数自定义,可重载访问权限为publicclass person {public: char* name; int age;}...
2020-05-03 17:01:30
120
原创 51汇编(六):数码管显示
文章目录数码管驱动单位数码管数码管数码管分为共阴数码管和共阳数码管。数码管极性不同所对应的程序也不同,现实中多通过三极管驱动数码管,因此常用共阳极数码管。驱动单位数码管...
2020-05-02 22:19:24
17169
2
原创 51汇编(五):延时函数
延时在单片机运行过程中,有时我们需要在一条指令执行后停顿一段时间,再继续运行下一条指令,例如LED灯闪烁;我们可以通过NOP指令让单片机停顿一个机械周期,显然我们需要很多个NOP指令才能实ms级延时,这时我们就需要通过循环执行NOP,控制循环次数实现延时,并包装成函数,便于随时调用。;执行2×20×100次NOPDELAY:MOV R7, #2DELAYLOOP1:MOV R6, ...
2020-05-02 21:09:14
7634
2
原创 51汇编(四):IO控制
IOIO即Input/Output,输入/输出,可以通过程序修改特殊功能寄存器对应位置的值,来控制51单片机具有IO功能的引脚输出高低电平。51单片机总共有4组IO,每组8个,共32位,对应的特殊功能寄存器分别是P0,P1,P2,P3,对应位分别为Px.0,Px.1,……Px.7(x为0,1,2,3),Px寄存器支持位寻址,默认值为1。例如:设置P2.4IO口为高电平SETB P2.4,低电...
2020-05-02 20:28:55
1695
原创 C++:函数指针
函数指针的三种定义方式:定义一种函数类型// 定义一种函数类型typedef void(FuncType)(int a, int b);//定义函数void printAandB(int a, int b) { printf("a = %d, b = %d", a, b);}// 创建函数指针FuncType *funcPtr = printAandB;定义一种函数指针...
2020-04-30 20:34:47
157
原创 51汇编(二):汇编指令
汇编语句由助记符 + 地址,寄存器或立即数组成。助记符详见表:实际符号直接地址direct间接地址@Ri寄存器Ri,A,DPTR···可位寻址空间地址bit标识rel...
2020-04-26 16:23:51
258
原创 自学MFC(五):对话框添加状态栏,并显示时间
文章目录状态栏定时器状态栏打开资源视图窗口—xxx.rc—String Table项—String Table。双击添加字符串IDS_STRING_TIME,102,Time,IDS_STRING_AUTHOR,103,Song J。在xxxDlg.c中添加结构体。// 状态栏相关定义static UINT BASED_CODE indicators[] = { IDS_ST...
2020-04-24 23:00:29
546
原创 MFC 向Edit Control尾部添加字符串
在MFC中向Edit control控件尾部添加字符串。void addInfo2RecvWnd(CString strMSG) { int infoLength = 0; CString info = _T(">>"); // 获取当前时间 info += getCurrentTime() + _T("\r\n"); info += strMSG + _T("\r\n\r...
2020-04-24 17:55:34
944
原创 MFC 获取系统当前时间
在MFC中获取系统当前时间,CString类型,显示效果2020/1/1 12:34:56。CString getCurrentTime(void) { CTime timeNow = CTime::GetCurrentTime(); CString strTime; strTime = timeNow.Format("%Y/%m/%d %H:%M:%S"); return strTi...
2020-04-24 17:36:13
1861
原创 自学MFC(四):Edit Control控件
文章目录Edit Control控件Edit Control控件的输入与输出Edit Control相关属性换行滚动条Edit Control控件Edit Text控件常用于文本的输入输出。在对话框上放置两个Edit Control控件,两个Static Text控件,一个按钮。放置在合适的位置,调整大小。Edit Control控件的输入与输出在属性窗口修改控件ID,分别为ID...
2020-04-22 20:15:48
4919
原创 51汇编(一):存储器结构
文章目录内存结构程序存储器数据存储器通用寄存器区位寻址区一般RAM区特殊功能寄存器区内存结构MCS-51单片机在物理结构上有四个存储空间:片内程序存储器、片外程序存储器、MCS-51单片机在物理结构上有四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。但在逻辑上,即从用户使用的角度上,MCS-51单片机有三个存储空间,每个存储空间包括从0到最大存储范围的连续的字节地...
2020-04-22 17:00:13
1816
原创 51汇编(〇):单片机概述
文章目录什么是单片机单片机的外部结构单片机的内部结构什么是单片机微控制单元(Microcontroller Unit,MCU) ,又称单片微型计算机(Single Chip Microcomputer ),更多得称之为单片机;单片机拥有组成一台简易计算机的所有部分,包括:中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、I/O口、中断系统、定时器/计数器等功能,其最主要的功能便...
2020-04-22 15:17:08
654
原创 自学MFC(三):Button控件
文章目录响应机制消息映射响应函数的声明与实现按钮控件单击响应设置不可点击总结响应机制MFC通过前台窗口捕捉用户的操作,例如:单击,双击等,MFC的消息响应机制就是为了实现前后台交互的一种机制,包括消息映射,响应函数的声明和实现。消息映射MFC使用消息映射表来表示各个控件的消息与响应函数之间的映射,在基于对话框的MFC程序中,消息映射表在xxxDlg.h文件中通过BEGIN_MESSAGE_...
2020-04-22 11:44:30
737
原创 自学MFC(二):Static Text控件
文章目录MFC控件Static Text控件总结MFC控件MFC作为一个界面开发框架,界面控件是必不可少的,MFC提供了许多内建控件,例如按钮,文本框等,也有很多第三方控件;每一个控件有自己属性,包括:ID(名称),Visible(是否可视),ReadOnly(是否只读),我们可以设置控件的属性使其表现出不同的效果;控件的目的就是提供人机交互的途径,用户可以通过控件与后台程序交互,后台程序也可...
2020-04-21 21:55:07
6028
1
原创 自学MFC(一):建立第一个MFC程序
文章目录编程环境建立MFC工程1.1 新建工程目录1.2 工程配置1.3 MFC工程的文件结构总结编程环境操作系统:Win10 1909IDE:Visual Studio 2017(中文)一般配置好C++开发环境的VS都能够编写MFC程序,如果没有也不用担心,可以通过顶部 菜单栏—工具—获取工具和功能 添加所需要的组件(适用于其他任何VS组件)。建立MFC工程1.1 新建工程目录进...
2020-04-21 19:31:16
2682
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人