- 博客(28)
- 收藏
- 关注
原创 在STM32嵌入式中C/C++语言对栈空间的使用
像STM32这样的微控制器在进入main函数之前需要对栈进行初始化。可以说栈是C语言运行时的必要条件。我们知道栈实际上是一块内存空间,那么这块空间都用来存储什么呢?有什么办法能够优化栈空间的使用?
2024-07-21 17:05:23
578
原创 在编译固件的时候,如何将函数或者数据编译到指定位置?
在设计微控制器的程序时,有时候希望将一部分函数或者数据放在指定的区域,而不是由编译器自动处理。比如有些STM32包含多个SRAM,这时希望一部分数据放置在RAM2中,而其它的数据存放在RAM1中。或者具有CCM RAM的STM32,为了提高代码的运行速度,想要将代码放在CCM RAM中,而不是Flash中。像这些情况要怎么做呢?
2024-06-28 11:25:57
563
原创 STM32在进入main函数之前的准备工作
在大部分嵌入式系统中,在进入main函数之前都需要执行一个系统初始化序列。初始化序列都包含哪些内容呢?
2024-06-17 18:30:32
272
原创 防雷防浪涌电路设计
通信线路或者电源线路通常会铺设到户外,一旦线路铺到户外后,就需要考虑防雷的问题了,那么怎么设计保护电路,能够防止雷电等浪涌对电路的破坏呢?
2024-05-10 15:43:52
1720
原创 C语言编译的优化等级应该选哪个?O0、O1、O2还是O3
在使用IDE开发STM32程序时,IDE一般都会提供优化等级设置的选项,例如KEIL提供的O0、O1、O2和O3,这些不同的优化等级有什么区别,应该如何选择?
2024-04-27 17:07:49
2404
原创 为电路提供参考电压(基准电压) - 齐纳二极管的使用
在电路中通常需要用到参考电压,即提供一个恒定的精确的电压值。比如稳压电路、比较器电路、微控制器的Vref,这些电路都需要提供参考电压。很多厂家都提供了参考电压芯片,不过最简单最省钱的方式是使用齐纳二极管。
2024-04-20 18:43:24
1042
原创 如何通过电路将正弦信号转换成余弦信号
如何使用电路将正弦信号转换成余弦信号呢?根据三角函数的公式,可以知道余弦信号与正弦信号的相位相差90度,因此可以使用RC移相电路将正弦信号转化为余弦信号。还有一种方法,正弦信号的微分就是余弦信号,因此也可以通过微分电路将正弦信号转为余弦信号。
2024-04-03 18:14:15
908
1
原创 C语言-使用二维数组作为函数参数
起始这个也是可以理解的,因为二维数组在内存中是连续的,如果我们想通过二维数组的第一个维度去索引这个数组,那么肯定需要知道第2维度的大小,这样代码才知道变换不同的第一维的位置,需要挪动多少个字节。因此为了在代码中对不同的分段进行访问,代码必须要知道分段的大小,因此作为参数的时候,必须指定其第2个维度的大小。首先要明确一下二维数组的变量类型,以下面的例子为例,它的类型是 int (*)[10] ,即与数组名a等价的变量类型应该是“一个指向包含10个int元素的指针”。这时,只需要传入二维数组的名字就行。
2024-03-25 09:18:31
276
原创 单色屏上是否应该使用专业的GUI库
相比于彩屏,单色屏的驱动更简单,而且需要的硬件资源更少、功耗更低,因此在工业控制领域仍然很常见。说到在屏幕上的显示,很多人都会想到GUI库(比如LVGL、emWin等),那么在自己的项目中需要在单色屏上使用GUI吗?
2024-03-04 14:47:20
509
1
原创 emWin页面不响应按键的解决方法
使用emWin创建页面,当出现不能响应按键事件的页面时,因为页面无法发生变化,看着就像是死机了。出现这种现象的原因主要是这个页面没有能够捕捉按键事件的控件。
2024-02-25 11:34:44
375
1
原创 [Raspberry Pi Pico W] Visual Studio Code的使用
使用Visual Studio Code编写Raspberry Pi Pico的代码
2023-05-05 18:26:04
1045
原创 使用MicroPython开发Raspberry Pi Pico W
使用MicroPython开发Raspberry Pi Pico W,包括固件的下载和开发环境的搭建。
2023-05-04 20:33:08
809
原创 MAIX_BIT开发环境的搭建
MaixBit是sipeed公司设计的基于K210芯片的开发板。K210芯片是RISC-V架构的64位双核处理器,用于边缘智能计算。这个处理器上主频为400MHz,包括8M的片上SRAM,内置多种硬件加速单元(KPU、FPU、FFT),在AI机器视觉、听觉方面性能表现突出。...
2022-07-07 19:53:15
1278
原创 C语言格式化输入函数scanf和sscanf的用法
scanf和sscanf是C语言中常用的格式化输入函数。常用于从标准输入或者字符串中,按照一定的格式,将输入赋值给变量。除了常用的获取整型、字符串等数据外,还有三种用法比较实用。
2022-05-13 16:24:04
1519
原创 STM32的异常和中断的区别
在学习STM32的中断时,总是能够看到两个单词:异常(exception)和中断(Interrupt)。这两者有什么区别呢?
2022-04-22 15:16:31
675
原创 使用树莓派的I2C读取DHT12的温湿度数据
手上有个树莓派(raspberry pi)B+,在手里吃灰很久了,现在来看已经是个老古董了。最近有时间想利用一下,就画了个扩展板。树莓派因此了不少的接口:I2C、SPI、UART、PWM、GPIO。这篇先介绍一下如何使用树莓派的I2C接口进行通讯。树莓派的I2C接口树莓派包含一个I2C接口,可以使用下图红框中的引脚通过上拉电阻与DHT12通讯。在使用的时候,需要通过指令sudo raspi-config,使能树莓派的I2C功能。此时可以通过sudo apt-get install i2.
2021-10-23 20:50:14
797
原创 STM32的中断的管理
stm32的中断是接收双重管理的:外设自身寄存器对中断的管理NVIC(嵌套式中断管理器)的管理比如外部中断,即需要配置EXTI寄存器,有需要配置NVIC寄存器。外设自身寄存器对中断的管理外设自身对中断的管理包括2项内容:中断使能挂起位查询NVIC对中断的管理NVIC对中断的管理包括3项内容:中断的使能挂起位查询优先级管理可以看到两处管理都包含中断的使能和挂起位查询,那么这两个地方有什么不一样呢?两处管理的不同两处管理的意义和层级并不一样,举个不太恰当的例子:大臣写了
2021-03-16 11:04:52
613
4
原创 STM32的LL库中LL_GPIO_MODE_INPUT与LL_GPIO_MODE_FLOATING的区别
STM32的LL库是ST公司推出的以提高运行效率,而且又兼具一定的易读性的库函数。在GPIO初始化时,使用LL_GPIO_SetPinMode() 函数设置某引脚为输入模式时,有两个类型都是设置为输入模式的:LL_GPIO_MODE_INPUT与LL_GPIO_MODE_FLOATING。那么这两个有什么区别呢?通过仿真读取相应端口的CR寄存器得到:使用LL_GPIO_MODE_INPUT时,CNF[1.0]被设置为0b10使用LL_GPIO_MODE_FLOATING时,CNF[1.0]被设置
2021-03-09 16:02:57
3945
原创 Arduino电路中的MOS管fdn340p的作用
疑问Arduino电源设计中用的MOS管如下图所示。按照模电教材上,如果这个MOS管是作为开关控制VUSB导通到5V的话,+5V网络应该接在MOS管的漏极,而不应该是源极。当VGS<0时,MOS管导通。如下图所示。但是Arduino上的MOS管,输入电源VUSB却接到了MOS管的漏极,而负载接到了源极上,与教材上正好相反。从Arduino的原理图上可以看出,FDN340P的作用是为了从VIN和VUSB这两个输入中选择一路给5V供电,那么这个图是不是有点问题呢?问题1:如果只有VUSB供电
2021-02-03 19:49:30
3117
2
原创 使用python读取excel文件数据,修改dbf文件
这两天需要填写毕业生的就业数据,就业数据都是填到dbf文件里。这种文件不能整篇复制粘贴,只能一个格一个格的粘贴,太费时间了。而python使用起来简单,就写了段代码,实现从xlsx文件里读出数据写到dbf文件的相应位置上,这样就节省了复制粘贴的时间,很大的节约了时间。dbf文件的读写使用的是dbf库,安装方式是 pip install dbf主要操作是打开dbf文件,关闭dbf文件,读取数据,写入数据。xlsx文件使用的是openpyxl库,这次只是读取数据,没有测试改写数据。dbf文件打开文件
2021-01-09 18:59:45
1180
原创 同样是耗尽层封锁导电通道,为什么夹断电压下有电流而截止状态下没有电流
很困扰,JFET在截止电压和夹断电压下,都是耗尽层封锁了导电通道,为什么在截止电压下没有电流ID,而夹断电压下却有,这两个有什么区别呢?首先要强调的是:耗尽层并不是绝缘的,而是电阻比较大,因为在耗尽层中还是有很少的一部分的载流子的。而截至状态和夹断状态的区别就在于:耗尽层的大小。首先看截止状态下,耗尽层自上而下都封闭了导电通道。耗尽层很大,对应的电阻很大,所以没有电流或者只有很小的电流流...
2020-03-10 17:38:39
1308
原创 串口数据接收的常用处理方式
串口接收常用方式串口数据接收的常用方式有三种:使用状态机机制通过判断结束字符的方式通过数据接收超时的方式三种方式的优缺点使用状态机机制,这种方式常用于接收16进制数据的情况,比较典型的例子是modbus-rtu数据的接收。这种方式能够及时的处理接收到的数据,但是写程序太繁琐,而且通用性差,不同的协议状态机就不一样。使用状态机机制接收数据,可以参考libmodbus的代码。通过判...
2020-02-01 19:51:55
5213
原创 普通二极管与齐纳二极管的区别
二极管是电路设计的常见器件,但是二极管又有多个种类,比如普通二极管、齐纳二极管、肖特基二极管等等。那么这些二极管有什么区别,适用于哪些场合?应用特性普通二极管利用的是二极管单向导通的特性,因此常应用在正向偏置的场合。齐纳二极管则是利用二极管的反向击穿区,因此工作在反向偏置时。应用场合普通二极管用在:整流电路限幅电路钳位电路齐纳二极管用在:稳压电路中肖特基二极管...
2019-02-14 20:04:55
7783
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人