- 博客(12)
- 收藏
- 关注
原创 错误记录:所生成项目的处理器架构“MSIL”与引用的处理器架构不匹配
生成” ,“配置管理器”中,将对应的“any CPU”改为x64。注:x86基于32位指令集,而x64基于64位指令集。
2024-05-16 13:54:54
225
1
原创 错误记录:expression must be a modifiable lvalue
错误出现在给两个数组赋值的情况下,我想把b数组中的值依次赋给a数组,直接使用了a=b,显然是不对的。a和b是数组名,而数组名表示的是数组“第一个元素”的“起始地址”。即a和b表示的是地址,是一个常数,不能将一个常数赋给另一个常数。译为:“表达式必须是一个可修改的值。
2024-05-16 11:50:49
1138
1
原创 学习笔记:kvaser canlib cs 窗体例程问题解决
在kvaser官网下载,解压后路径为\Samples\Example\cs\vs2010-getting_started\4_WpfApplication。找到“canSetBusParams”方法,发现它应该是只有6个参数,程序里有7个,删去一个。在\dotnet\x64\netstandard2.0下找到dll文件,添加。alt+enter添加该字段,问题解决,可以成功运行。OK,只剩下一个相同的错误了。
2024-05-15 19:08:18
250
原创 学习笔记:CAN波特率配置(HAL库)
需要将F407的CAN通信相关接口移植到F103代码上。首先看一下现有的波特率的配置。这里注意,对于F103,APB1频率为36MHz,对于F407该值为42Hz。两者的时钟树略有差别,代码的计算关系可读性还是很高的,不再赘述。注:CAN挂载在APB1上。
2024-05-14 19:15:27
238
2
原创 学习笔记:头文件保护宏与头文件兼容C++的写法
在读取头文件时,预处理器会首先检查是否已经定义了该宏,在没有定义(即:if not define)的情况下才会继续处理头文件的内容。若已被定义,那么预处理器就会跳过头文件中的所有内容(从#ifndef到#endif之间的部分),从而避免了重复定义导致的编译错误。C++编译器和C编译器对名称的处理方式不同,因此需要 extern "C" { 来告诉C++编译器随后的函数和变量声明应该以C语言的方式链接。这两部分合在一起,就可以在C++代码中安全地包含C代码或C函数声明,并确保它们以C语言的方式链接。
2024-05-13 14:27:58
134
1
原创 学习笔记:C#字符串处理相关函数
第一行代码表示从索引值0开始,即字符串中第一个字符开始,索引的长度为3,取出数字“415”。第二行代码表示从索引值4开始,即字符“+”之后的数字“6”开始,取出所有剩下的字符,即取出“625”。这里注意,索引值是从0开始的,即字符串中第一个字符对应的索引值为0,“+”号为第四个字符,因此索引值为3。乍一看好像很简单,但是用户的输入并不是两个单独的数字,而是如“415+625”这样的一个字符串,因此需要使用一些字符串处理函数来把这两个数字剥离出来再进行相加。以“415+625”为例,得到字符串长度为7。
2024-04-06 14:54:19
116
1
原创 错误记录:Undefined symbol HAL_PWREx_EnableOverDrive
查询资料得知,F427开启Over Drive(即超频)模式后工作频率可达到180 MHz,而F407没有这一功能,最大频率只能达到168Hz。将相关Over Drive代码注释掉后,问题解决。
2024-03-26 13:47:59
271
原创 学习笔记:解决函数隐式声明:function “memcpy“ 和“printf”declared implicitly
在对应.h文件中加入:在对应.h文件中加入:
2024-03-23 10:20:01
472
1
原创 错误记录:hal库配置完成后,在代码中更改IO口
问题来了,还有其他地方要修改吗?粗略看了眼gpio.c函数中,端口名称配置都是用的宏定义中的宏名,所以就想当然地认为。可以直接在hal库的图形化界面中修改,但直接在代码中改也可以。编译通过,但新端口仍无法正常使用。使用hal库配置完IO口后,需要更改对应IO口,将。相关的端口,也就没有对相应时钟进行初始化。GPIO端口时钟没有初始化!gpio.c中没有需要修改的。,在此之前没有使用到。
2024-03-21 09:42:02
144
1
原创 错误记录:if statement has empty body
if后没有程序体”,通常是在if后多加了;于是又确认了一遍这部分代码,确实没找到问题所在。总结:格式问题报错,出错点不一定在报错的那行,找不到时可以再检查下其他行。但这只是warning, error在哪呢?记录自己犯的经典小错误。有问题,无非是分号啊括号啊这方面。代码后,发现好像并没有问题。
2024-03-16 11:35:24
1103
原创 学习笔记:STM32 按键控制DAC寄存器的范围
细读了一遍函数 DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data),发现它的两个参数分别表示对齐方式与存入寄存器中的数据。将按键加至设定的最大值4000后,如图,问题来了,功能倒是正常实现,但最大电压(DA转换后再使用AD转换并在LCD上显示)达不到3.3V。功能很简单,按下按键后,对DAC寄存器中的数据进行加或减,可控制范围为0至4000,每次加或减200。OK,产生溢出了,溢出的数据正正好好,也就是说最多可以往寄存器中存入4095。
2024-03-13 16:40:09
422
原创 学习笔记:STM32 定时器使能与计数值清零
虽然此时计数停止,但定时器中的计数值(存放在TIMx 计数器 (TIMx_CNT)) 中并没有被清零,再次点亮时实际的计数是在上一次的计数基础之上进行的,导致小灯自然熄灭的时间少于设定值10s,具体少多少取决于之前计数总数(即上n次小灯从亮到熄灭的时间之和)。按键点灯非常简单不再赘述,在使用定时器时遇到了点小问题:首先想到的是使用enable和disable控制定时器,即:if查询小灯状态,在亮时enable定时器,在灭时disable定时器。具体如下:(控制TIM3)如果小灯点亮时间达10s,自动熄灭。
2024-03-12 17:53:21
2285
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人