- 博客(23)
- 问答 (2)
- 收藏
- 关注
原创 c#的委托、事件
这句话定义了一个委托事件,事件就是特殊的委托,也就是一个函数的入口指针,如果满足格式(也就是签名)的要求,可以注册到别的方法上。这句话的含义是,给这个委托找一个具体的方法,也就是赋一个具体函数入口指针。方法一、在form1的类定义中,定义如下代码,这样定义是最直接的,也非常简单,没有涉及到委托和事件。这时候起到的作用就是共用了方法,这些暂时还没有引入更多的参数,应该有更好的方法,暂时记录到这里。总结:这种方法看着更麻烦了,但是层次更加清晰了,如果有多个bool型变量具有相同的方法,这时候优点就显现出来了。
2024-09-18 16:17:45 418
原创 用qt调试can通信,波特率如何设置
1、用厂家提供的测试软件测试通信参数,测试结果如下图所示,主要设置BTR0和BTR1,测试结果为333.333kbps,BTR0和BTR1分别为0X00 和0X6F;3、打开Qt的demo程序,根据检测的数据修改波特率,如下图,因为初始的demo程序没有333.333的波特率选项。1、usb转can通信模块型号为创芯科技的USB-CAN适配器,厂家提供的测试软件和demo程序,如下图所示;前期都调试好了,工程找不到了,花了半天时间重新搞了一遍,记录一下。2、用厂家的测试软件,检测CAN的数据。
2024-07-28 14:34:16 307
原创 c#学习日志用CLI(命令行窗口)创建c#工程
创建Helloworld.Proj和Program.cs两个文件然后运行即可,一种方法是用记事本创建,写入代码,这种比较费劲,主要代码如下。4、不同于嵌入式的c代码,代码必须包含在方法(函数)中,方法必须隶属于类(对象)或结构;5、Main方法作为应用程序的入口点是没有问题的,只是在后台转换为以下代码了。2、c#的工程文件后缀为.Proj,部分教材误写为pro,耽误了一些时间;Helloworld.Proj中的代码如下。Program.cs中代码如下。1、.net需要实现安装好;3、豆包是很有帮助的工具;
2024-06-27 15:26:40 367
原创 QT开发用哪个版本?
采用QT开发,需要有基于Windows和嵌入式的应用场景,采用哪个版本?各有什么优缺点?1、哪些是长期维护版本?2、QT5和6比较成熟和资料比较多的是哪个版本?3、知识产权的解释有哪些?回答:1、Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的(很多嵌入式板子还是用Qt4.8)
2024-04-15 13:52:14 1742
原创 STM32F429内存管理实验中的疑问
2、内存管理控制器的 定义的是一个一维数组 uint32_t *memmap[SRAMBANK],包含3个地址,作为3块内存管理表的首地址,能通过二维数组的方式访问mallco_dev.memmap[memx][i]1、针对正点原子F429的内存管理中的,内存释放函数,理解应该是释放从指针开始,一直到内存起始地址的所有已经申请的内容区域,但是实际的测试效果事,通过内存占用函数测试并没有完全释放,立Flag,后续弄清楚了回复。
2024-04-08 15:09:30 196
原创 C语言中__attribute__的含义
_attribute__的作用主要指定变量、结构体和数据类型的内容 地址、对齐方式、所处的段位置的功能。内存池的位置及大小设置时,用到了下面的语句,__attribute__的含义需要解析。关于__attribute__的详细语法使用,大家参照CSDN上。1、提高运行效率,避免由于对齐造成的数据存储器访问大量耗时;2、优化内存使用情况,避免造成过大的内存需求,降低硬件成本;3、外扩数据存储器时,需要用到该指令,进行内存的分配。1、变量按照32个字节的对齐方式进行分配;
2024-03-29 11:52:14 217
原创 嵌入式内存管理的含义及实现
内存在嵌入式领域的含义应该是数据存储器,从汇编语言学习嵌入式开始的一代人,例如70后、80后,对嵌入式系统的数据存储器具有比较深刻的认识,不论是学生时代的考试准备,还是工作后的应用开发,如果涉及到汇编的时候,数据存储器、位寻址,存储单元的地址的概念都是比较清楚的。内存的使用是动态的,根据函数的调用,特别是中断(通信中断)对内存的需要是动态的,如何监视内容使用情况,并进行内容分配?1、如果不进行内存管理,编译软件如何使用内存,内存究竟需要多大,如何评估开发板需要多大的内存,是否需要外扩数据存储器?
2024-03-28 11:30:08 232
原创 4*4键盘扫描程序如下,KEY13一直无效,应该没有问题,很有趣的现象。
4*4键盘,有一个键一直无效,硬件没有问题,肯定是软件的问题,因为用软件独立测试也没有问题,很有趣,记录下来,就跟魔术解密一样,趁还没有解密,记录一下,找到问题了就索然无味了。源代码如下u8 KEY_Scan(void) { u8 KEY=0; H1 = 1;H2 = 0;H3 = 0;H4 = 0; if(L1==1||L2==1||L3==1||L4==1) { delay_ms(5);...
2020-06-08 11:23:46 226 1
原创 switch语句的使用,为什么不做比较直接进入CASE语句了
switch语句进行安检值的判断,按键值为任何值时,都能进入case 4语句,很奇怪的现象,如下图所示,更改CASE条件也是同样能够进入。刚开始怀疑是MDK环境不是标准c环境,但是好像不是这样的,标记一下,后续贴上解决方案。...
2020-04-30 14:42:49 678
原创 C文件在MDK中中文显示不一致的问题
同样的代码,其中的中文字符在不同的.c文件中显示不一致,花了大半天时间去解决,标记一下。由于用到EMWIN中的GUIBUILER导出的C代码,我用记事本打开修改了,然后再导入MDK中造成的问题。...
2020-04-24 15:04:47 387
原创 hostlink调试的奇怪问题
问题描述:1、调试欧姆龙PLC的hostLINK通信接口,发送的数据一直会多出来问号,如下图所示,我发送的数据和我接受到的数据不一致串口软件接收到的数据如下图所示, 在“”“@”后面多出了"?" 2、用串口软件的发送和接收测试如下图所示,一切正常用串口软件发送和接收测试,正常期待问题解决后的答案。 ...
2018-09-04 10:41:56 1171 1
原创 全局数组的定义、声明和使用
如果需要使用一个全局数组,那么可以这样做,在a.c中定义一个数组 u8 test[]; 在a.h中进行声明 extern u8 test[];如果需要在b.c中对数组操作,那么b.c中包含头文件即可,我是这么理解的,也是这么做的,可是编译的结果exti\exti.c(175): error: #70: incomplete type is not allowed。查资料查了半天,查问题,最后是这
2018-01-26 14:17:34 18472 1
原创 结构体指针错误造成MDK运行时的硬件错误报警及解决
我要用到一个函数void GUI_DispStringInRect (const char GUI_UNI_PTR * s, GUI_RECT * pRect, int TextAlign);这是emwin的一个系统函数,第一个参数指向一个字符串,第二个参数指定一个矩形区域,第三个参数指定显示时候对齐方式。GUI_RECT定义如下typedef struct { I16 x0,y0,x1
2017-05-07 12:43:24 1666 1
原创 static的用法
static经常用来修饰变量,主要有2种用法,静态局部变量,静态全局变量。静态全局变量跟全局变量的区别:静态全局变量仅仅作用于当前 文件,静态变量作用于整个工程,即使其他文件进行声明,也是不能使用的。静态局部变量跟 局部变量的区别:1、局部变量在函数创建时分配存储地址,函数结束则释放,静态局部变零只在第一次调用该函数时分配内容,后面再调用时直接用,而且局部静态变量的值能够被上次调用时候
2017-03-05 11:09:28 353
原创 用寄存器建立工程模板无法下载现象及解决办法
问题描述:不利用库函数,直接利用寄存器建立工程模板时,编译过程没有错误,下载程序是提示如下:(服务器错误不能上传)Flash download failed解决办法:在target option->ulity下重现配置,回头修改这篇博客,补充上图,估计是MDK的bug,再编译下载就没问题了。郁闷的现象及问题
2017-02-27 16:25:12 215
原创 库函数建立工程时容易犯的错误
用库函数建立工程模板时学生主要犯的错误如下:1、没有包含stm32f10x_conf.h stm32f10x_it.c stm32f10x_ic.h这几个文件,提示的错误是找不到stm32f10x_conf.h 文件,文件位于标注库文件夹下面的STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Pr
2017-02-27 15:46:23 347
原创 c语言关键字volative的作用
在嵌入式开发中经常见到这样的关键字 __IO,用来对单片机的IO引脚、寄存器等变量进行声明,通过追踪其定义,发现 __IO实际就是关键字 volative . 如果一个变量声明时候用到关键字volative ,那么以后每次用到该变量都要从其物理地址直接读取,不能利用原来的数据,主要是避免编译器优化的原因和外部造成的变量改变,举例如下:void divv(int a,b){int c,
2017-02-14 12:22:05 457
原创 MDK安装时Windows版本问题
如果keil MDK5运行过程中关机,特别是在WIN7 WIN8 WIN10等高版本用运行时,鼠标右键KEIL图标,修改兼容性,如下图所示
2017-02-13 16:18:26 769
原创 MDK5.14仿真时驱动文件的设置
用MDK5.14进行仿真时,驱动文件既DLL文件的设置,必须要跟你芯片厂家、型号要一致。例如我选择的是STM32F103RC,则驱动文件设置如下图,为什么这么设置,我认为应该是芯片的型号的原因,我也是从一个书上看到的,个人认为不用深挖原因,不同的厂家的芯片肯定是有不同的,必须要告诉编译器,要不就没有办法仿真了,这些驱动文件有可能是芯片厂家提供的,KEIL给这些驱动文件预留了一个导入的口而已。
2017-02-08 16:44:52 868
原创 error: L6236E: No section matches selector - no section to be FIRST/LAST.原因没有加载启动代码
KEIL编译STM32程序出现test.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.其原因很简单,就是没有加载启动代码,其格式是.s形式。加载上就可以了,希望帮到新手。编译之后没有报错。目录树中应该有个STM32F10X_HD.S的文件,忘了加载,就出现这样的错误。
2017-02-08 16:06:45 2019
空空如也
MDK在线调试运行(run)状态下,停止,MDK直接退出原因
2017-03-08
KEIL MDK5.1是否兼容WIN7 WIN8 WIN10 32 64这些版本?
2017-02-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人