自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangzibigan的博客

C与C#与MCU

  • 博客(61)
  • 资源 (7)
  • 收藏
  • 关注

原创 C#:base64解码显示

base64解析

2022-10-05 20:07:08 1555 1

原创 qt:tcp通信工具(Server端)

1.说明使用qt写一个类似网上常见的网络调试工具。此篇为Server端。Client端在上一篇。2.基本流程新建QTcpServer对象,为其newConnection信号写槽函数。此为新的Client连接信号,在其对应槽函数里使用nextPendingConnection方法获取Client对象,并为Client添加readyRead(读数据),disconnected(断开连接)两个信号写槽函数。开始监听使用Server的listen方法,停止监听使用Server的close..

2021-11-18 21:42:58 3981

原创 qt:tcp通信工具(Client篇)

1.说明使用qt写一个类似网上常见的网络调试工具。此篇为Client端。下一遍再写Server端。2.基本流程Client端相对简单:创建QTcpSocket对象,为对象的readyRead,error,connected(可选)分别写槽函数,以处理读数据,错误,连接成功三个事件。连接使用对象的connectToHost方法,断开使用disconnectFromHost方法。程序不做编码转换处理,因为之前的几遍文字已经做过,不再赘述。3.代码这是mainwindow.cpp文

2021-11-18 20:55:15 3591

原创 qt:写一个串口助手

1.界面布局这是一个常见的串口助手布局。要说有什么不常见,大概就是发送可以选择编码方式:GBK/UTF82.要点没什么难度,就是水磨工夫,一点点写。容易错处的地方都写在代码注释里。3.代码下面是 mainwindow.cpp 文件。#include "mainwindow.h"#include "ui_mainwindow.h"#include <qdebug.h>QSerialPort *serial;MainWindow::MainWindow(Q.

2021-11-13 21:33:37 1006

原创 qt:字符串与hex转换器

1.布局2.代码#include "widget.h"#include "ui_widget.h"#include <QtDebug>Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this);}Widget::~Widget(){ delete ui;}void Widget::on_btn2hex_.

2021-11-13 21:06:45 1332

原创 RISC-V架构单片机GD32VF103:IAP功能

自从传闻ARM要出售给美国公式,本人内心的不安全感促使我寻找ARM架构单片机的替代产品。网上问了写网友,有推荐GD32VF103,于是花了些时间了解这个系列的MCU,发现其实也还行,这个MCU跟GD32F103很像,RAM, ROM,外设,封装都差不多。虽说开发环境有些不太熟,不过花些心思,也能凑合使用,至少,比51单片机好用多了。因为官方Firmware没有IAP方面的内容,所有这篇文章专门讲讲此单片机如何进行IAP,毕竟实际工作应用中会经常使用。1.开发环境。我使用的IDE是Nuclei S

2020-09-11 23:14:00 2200 5

原创 C#游戏《坦克大战》--主程序

今天和女朋友分手,写一段技术博客以平静心态。1.统计信息用于主界面显示各种信息 //统计 public struct t_statistics { public int generateenemyNum; //生成敌人数量 public int destroyenemyNum; //已经摧毁的敌人数量 public int GetcurrenemyNum() //

2020-07-18 17:33:42 650

原创 C#游戏《坦克大战》--坦克

1.坦克相关信息这里的各种类型,使用struct而不是enum,避免后面强制转换。 //子弹信息 public struct t_bulletinfo { public int idx;//链表中的顺序号 public int dir;//当前方向 public t_bulletinfo(int i, int d) { this.idx = i; this.dir

2020-07-17 20:03:12 860

原创 C#游戏《坦克大战》--地图

疫情期间无聊,用C#写了个游戏《坦克大战》。1.概述程序主要包括地图部分,坦克部分,和碰撞检测部分。本章只写地图部分。2.地图系统地图包括底图和上面的地形元素,比如草地(减缓速度),土墙(容易击破),河流(能通过子弹但阻碍坦克)等。而且允许自定义各种地形。3.重点地图系统的重要功能是绘图,并保存地图元素,以便主程序进行碰撞判断。1.可以加载图片当作底图,也可以随机生成。2.绘制元素,或擦除元素并恢复原来的地图内容。3.需要保存工具,下次打开程序还能继续使用。

2020-07-16 20:59:18 1173

原创 C# MandelBrot分形图绘制

一。代码注:这里为了制造多个渲染效果使用委托类来当作函数指针使用。 private static Random rn = new Random(); private delegate UInt32 _dg_GetUint32Color(int i); private const int mb_iteration = 24; //迭代次数限制 private static _dg_GetUint32Color[] _m.

2020-07-15 21:16:08 644

原创 Cortex-M0模仿位带操作使用

Cortex-M3/M4有位带区(BIT-BAND),可以进行位带操作,而Cortex-M0是没有此功能区域的。必须说明一点,BIT-BAND的本质可以说是空间换时间。是为追求速度而设置的功能。像STM32F0XX这些Cortex-M0系列的MCU,如果追求速度,还是老老实实操作BSRR/BRR这类专门的寄存器。如果不介意速度损失,单纯想做出类似"位带"操作(比如:PAout(0)= 0,...

2019-04-22 21:19:00 3707 6

原创 STM32:SPI驱动ADXL345

ADXL345为3轴数字加速度计。支持SPI或I2C访问。网上例子大多是I2C,这里使用4线SPI。一、遇过的坑调试过程花了几个小时,遇到一些小坑。1.开始的时候,无论如何都无法读取芯片ID。这可是最基础的一步啊,SPI,I2C都试过。无奈之下,对照原理图与手册的管脚说明,发现Vs接到地了。其实这个管脚要接电源电压。老实说,一看名字还以为要接地,毕竟一般IC接地脚名字为Vss。让硬件工...

2019-03-19 23:35:14 8223 24

原创 STM32:FSMC驱动TFTLCD(2)

上一篇文章写了ST7789的基本驱动代码,但是没有实现具体的绘图代码。这里加上。1.代码头文件#ifndef __BSP_LCD_H#define __BSP_LCD_H#include "lcd_drv.h"/* RGB565: 高位至低位排列, RRRR RGGG GGGB BBBB*/#define RGB(R,G,B) (((R &gt;...

2019-03-14 20:17:48 1232

原创 STM32:FSMC驱动TFTLCD(ST7789)

最近项目使用STM32F407驱动tft彩屏,屏幕的内部驱动芯片为ST7789V,这个IC网上资料不多。废话不说,直接上完整驱动代码。1.代码/**************************************************************************************************** 模块名称 : TFT液晶显示...

2019-03-13 22:24:24 9814 6

原创 STM32:I2S驱动WM8978

最近项目中使用STM32F4驱动音频IC:WM8978。WM8978为DAC+ADC芯片,本身并不具备编解码的功能,一方面,可通过I2S接口接收PCM数据,转为模拟信号输出,此为DAC过程,即放音;一方面,可接收模拟信号转为数字信号,通过I2S接口传输给MCU,此为ADC过程,即录音。WM8978还使用I2C接口配置其工作参数,比如音量,EQ,3D环绕等。WM8978本身可直连1W/8欧的小喇...

2019-03-12 22:38:49 26714 7

原创 nodemcu:使用lua开发esp8266

一、LuaLua是一种轻量级的嵌入式脚本语言。由于它消耗资源小,本身是使用标准c语言开发的,所以也比较合适移植进各种单片机中,用来替代ini,xml这类配置文件,甚至json,并且更加灵活,功能更强。官网:http://www.lua.org二、nodemcu官方解释:nodemcu是超简单的物联网开发平台。直白地说,就是esp8266刷入了lua解析器,可通过Lua脚本控制esp...

2019-03-02 22:04:09 2168

原创 LUA移植至STM32全记录

    之前使用nodemcu时萌发了一直Lua至STM32的想法。后来项目需要,便花了2天移植。    Lua移植大约需要67K的rom,所以STM32F103C8无法使用,至少得103CB才行。1. 官网下载源文件http://www.lua.org/download.html我下载的 是当前最新版本--5.3.5。2. 解压,源代码位于src文件夹,去掉lua.c 和 luac.c...

2019-02-26 20:39:40 12019 1

原创 ESP32模组比较

1.简述ESP32系列无线IC是乐鑫espressif出品的性价比高的蓝牙WIFI双模IC。官网:https://www.espressif.com最详细的手册文档为:esp32_technical_reference_manual_cn.pdf2.模组比较将官方和一些其他方的模组列表比较,包括资源,价格。也把芯片放进去。ESP32单核芯片用的少没有列出。可以看出,安信...

2019-02-21 22:05:27 8314 1

原创 嵌入式软件架构的设计

嵌入式软件架构的设计大多数嵌入式程序员学习编程,都是从开发板的附带例程开始。之后工作也会继续参考那些例程,很多编程习惯、方式也会受之影响。其实开发板式的编程方式与工作中实际需求的并不完全一致。开发板的通常卖给初学者,注重“即插即用”,兼容各种模块,讲究功能的全面而不讲究性能、效率、成本、功耗等。很多时候为了兼容各种型号IC或者显示屏之类,程序累赘,逻辑混乱。开发板的程序往往是一个人完成...

2019-02-18 22:00:35 14856 1

原创 新年前的唠叨

明天就是除夕了,不知不觉又要大一岁了。2019年了,中国也变得越来越强大,国人也越来越明智自信。记得小时候,媒体的有一种现在看起来很无语的思想横行:凡是中国大陆与别的地方不同的,都是别人对,国人错。当是时也,各种知音体,读者体,意林体,充斥坊间,年幼无知的我和小伙伴们深受其荼毒。“外国”等于“高大上”的思想深入骨髓。港澳台也沾了光变成发达的代名词。什么夏令营的较量,马桶洗到能喝...

2019-02-03 13:42:06 268 2

原创 littevGL:软键盘和表盘

littevGL自带软键盘控件和表盘控件。表盘有两种,Gauge和Line Meter。1.软键盘软键盘有两种形式,一种是常规的字母键盘,一种是数字和标点符号键盘。lv_obj_t * kb=NULL;lv_obj_t *ta=NULL;void demoKeyboard(void){ lv_obj_t * btn1 = lv_btn_create(lv_scr_ac...

2019-01-29 23:20:52 2338

原创 littlevGL:字体与汉字

使用各种嵌入式GUI时,总会遇到“汉字显示”“字体”这些关卡。阅读本文前,最好已经了解Uincode,UTF-8,UTF-16,GBK,GB2312相关知识,不懂最好网络搜索相关知识。1.内置字体littlevGL内置了好几种字体。在lv_conf.h中开关相关字体/*================== * FONT USAGE *==================...

2019-01-26 22:48:51 9885 10

原创 littlevGL:移植到STM32

1.简介LittlevGL 是一个使用C编写的开源免费的GUI,应用在嵌入式设备。源码:https://github.com/littlevgl/lvgl2.移植准备首先需要一个可以正常使用的工程,有LCD驱动,触摸驱动。假设此工程的文件夹名为lvgldemo。本文使用的IDE为KEIL MDK。下载:https://github.com/littlevgl/lvgl 和 ...

2019-01-25 22:29:50 21829 3

原创 总结程序BUG原因

写程序多年,创造了很多BUG,总结一下这些BUG的原因。一、清零这个原因很常见,特别是底层驱动代码,不可避免需要一些全局变量,对于这些全局变量的清零要注意。一般可分为:1.应该清零的地方没有清零。    或者是忘记清零,或者是误以为不需要清零。2.不该清零的地方却清零了。    这会导致变量结果得不到累积。函数越长,或是越想节省临时变量一个变量多次无关使用,逻辑混乱,越是容...

2019-01-23 22:17:22 2098

原创 ESP8266获取网络天气

使用ESP8266模块来获取网络数据(天气,时间等),还是挺简单的。一步一步来。1.初始化串口与相关IO使得MCU可正常使用串口的发送与接收,以及一些IO控制ESP8266的使能端与电源。2检测模块通电后等待几秒钟,串口发送"AT\r\n",检测有回应"OK"则代表模块在线使用。3.连接路由热点发送"AT+CWJAP?\r\n"可以获取当前连接的路由,如果没有连接正确的...

2019-01-09 19:40:28 10598 3

原创 试用迪文串口屏

最近用了个迪文的串口屏,7寸电阻触摸,T5UIC2平台。这个屏很便宜,95元。假如自己买裸屏开发,屏本身也要60元,电阻触摸15元,加上带RGB接口的ARM9至少也要15,还有其他部件如电源稳压,FLASH等等,价格也没差多少甚至更贵。测试过程只要参考《T5UIC2 开发指南》与《HMI指令集》两个PDF文档。1.测试屏幕是否正常拿到屏幕,首先接通电源,使用PC串口助手发送一些命令...

2019-01-07 20:25:21 7018

原创 cJSON移植到STM32

项目中用到JSON接收网络数据,具体是STM32串口接收JSON数据,提取需要的内容。本来KEIL MDK是自带JSON的,但是我不习惯使用KEIL自带的那些第三方的东西,很杂乱的感觉。cJSON的移植比较简单,一下子就可以搞定。1.下载源文件。http://sourceforge.net/projects/cjson/只需要两个文件cJSON.c,cJSON.h;下载的包里面...

2018-12-20 23:51:29 6547 9

原创 STM32+EMWIN电子日历

之前花了几百元买的电子时钟坏了,就用闲置的板子做了一个。功能是显示/调整日期,时间,多个闹钟,倒计时。倒计时使用实体脉冲旋钮控制。基本软件架构是STM32F407+UCOSIII+STEMWIN+RTC。效果如下:这个是定时器,依靠旋钮调节定时时间 1.RTC参照原子历程初始化,并且定义一个新的日期时间结构这是为了一次性把相关消息发送到UI,注意要使...

2018-11-05 18:53:51 19576 21

原创 拼图游戏

1.首先布置好界面。标题栏,菜单栏,状态栏,以及放置图片框的panel。2.定义图片框类 /// &lt;summary&gt; /// 图片框类,包含虚拟XY位置 /// &lt;/summary&gt; public class PictureBoxEx : PictureBox { private Point _xy ; ...

2018-08-07 22:08:45 622

原创 说说STM32的堆栈与内存

1.概念这里所说的堆栈,是针对单片机所说的“堆”与“栈”,指的是内存中一片特殊用途的区域。而不是数据结构中的堆栈(虽然其实规则一样)。这里所说的内存,是指RAM,RAM包括SRAM,DRAM等。而不是什么手机内存卡之类。这里所说的flash,指的是用作为ROM的存储器,保存代码与常量数据。而不是动画制作。。。栈的生长方向:指的是入栈方向,从高地址向低地址生长叫做向下生长,或逆向生长...

2018-08-01 21:20:20 17720 7

原创 android蓝牙BLE串口开发

1.首先申请相关权限。在manifest.xml &lt;uses-permission android:name="android.permission.BLUETOOTH"/&gt; &lt;uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/&gt; &lt;uses-feature ...

2018-07-27 21:02:08 4084 2

原创 浅谈C指针,数组,函数指针

        工作中发现很多初入职场的同事不会使用指针,或者惧怕指针。作为C语言老鸟,在这里写一些有利于初学者理解C指针的东西,希望对他们有帮助吧。1.C语言里,指针可以说是地址变量。比如int n;int *p; n是一个变量。它的类型是int;p也是一个变量。可以这么理解:它的类型是(int*); 官方说法是:一个指向int的指针;直白说法是:p这个地址,是按照int的形式保存数据。本质上,...

2018-05-28 08:30:24 373 1

原创 CC2530: ZigBee协议栈实践例程(二)

1.函数流程         从Main()函数开始,基本调用顺序为        ①用户函数的初始化流程                ②系统运行流程                下面对关键函数进行分析。2.SampleApp_Init( )        这是用户任务的初始化函数。为了方便管理,可以将各种非网络必须的硬件软件初始化代码在此函数里面调用。        /***********...

2018-04-25 19:43:16 5045 3

原创 CC2530: ZigBee协议栈实践例程(一)

1.ZigBee版本          ZigBee是ZigBee联盟建立的技术标准。第一个ZigBee协议栈规范于2004年发布,称为ZigBee 2004或者ZigBee 1.0;第二个ZigBee协议栈规范于2006年发布,称为ZigBee 2006;第三个ZigBee协议栈规范于2007年发布,称为ZigBee 2007;然后呢?现在是2018年了。。。2.Z-Stack版本       ...

2018-04-25 19:38:00 10968

原创 cc2530:AF_DataRequest() 协议栈发送函数入口参数解析

1.原型位于AF.C/********************************************************************* * @fn AF_DataRequest * * @brief Common functionality for invoking APSDE_DataReq() for both *

2018-04-03 15:17:18 1906

原创 C# gif截取

很多时候下载了gif动画,但只想截取其中的的一部分(包括画面的一部分或者部分帧),于是做了个软件完成这部分功能。1.软件布局点击“截取”按钮则跳出保持对话框,“调整”按钮可进行GIF速度与分辨率调整,点选1:1会限制截取框的比例,开始与结束为需要保存的帧范围。2.代码需要引入Gif.Components.dll,网上可以下载这个dllusing System;us

2018-03-07 21:45:09 725

原创 SuperSocket: FixedHeaderReceiveFilter协议模版

SuperSocket 提供了几种通用的协议解析工具

2018-02-11 14:32:30 5285 4

原创 SuperSocket:TCP服务器最简单的例子

在C#中使用Socket时,发现TCP服务器处理起来有很多细节很麻烦,后来发现可以使用SuperSocket进行设计。于是写了一篇入门的例子。1.安装使用nuget在扩展工具栏里,联机库搜索 nuget ,找到 nuget安装包管理器。安装,重启软件。2.在项目中添加SuperSocket库如图右键工程名,选择“管理NuGet程序包”然后在界面中联机搜索Supe

2018-02-10 08:29:11 9990

原创 STM32F4制作一个计算器(二) 界面

STM32F4制作一个计算器(二) 界面

2018-01-26 23:28:55 3967

原创 C# 自定义画刷研究

windows系统中的画板工具,有好几种画刷,C#中并没有直接对应可使用的类,只能自己研究。

2018-01-22 19:50:51 1088

base64编码解码与数据显示

这是一个base64编码解码与数据显示的软件工具。C#开发 .net6.0,如果不能运行请安装.net框架。

2022-10-05

stm32f4+emwin电子日历

我的博客文章的源代码,包括UI,闹钟部分。其他请参考原子的EMWIN代码。

2018-11-05

程序员2009至2015年试题分析与解答(完整)

一个6百多页的影印版PDF文档,程序员2009至2015年试题分析与解答,直接解压即可阅读。

2018-05-10

魔棒工具源码(2)羽化

C#魔棒工具的羽化功能的源码,详细请看我的博客。使用卷积进行模糊处理ALPHA通道达到羽化效果。

2018-01-03

C# 类似PS的魔棒工具,漫水加边缘获取

一个类似PS的魔棒工具的实现,可以看我的2篇博文,使用漫水填充算法与边缘检测,获取边界与区域掩码图。

2017-12-25

颜色转换,屏幕颜色拾取

发现之前的不能在win11上使用,目前更新可以了。 RGB888与RGB565互转,颜色转换助手,支持全屏幕获取颜色,颜色对话框选择,等

2017-12-19

颜色转换助手RGB888-565

RGB888与RGB565互转,颜色转换助手,支持全屏幕获取颜色,颜色对话框选择,等待

2017-12-19

大数的加减乘除开方

本来开发计算器,发现要用到大数运算,于是写了本代码。包括大数的加减乘除,开方,包括浮点,符合处理。纯C语言,在VS2010上测试OK,未知BUG若干。

2017-09-29

空空如也

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

TA关注的人

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