嵌入式
文章平均质量分 64
憨猪在度假
电子爱好者,分享学习心得
展开
-
GC9A01驱动移植(HALL库)
最近在做LVGL的移植,用到的屏幕驱动时GC9A01的,记录一下学习历程,防止日后遗忘。SPI的协议主要有两个部分:CS和CLK拉低后即可通信,拉高结束通信。原创 2024-11-13 16:25:56 · 286 阅读 · 0 评论 -
VDD、VBAT、VDDA、VREF+区别
为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰,ADC的电源引脚为VDDA是ADC参考电压,VREF+通常在100pin以上的芯片会存在,100pin一下的芯片仅存在VDDA,实际上VDDA与VREF相连接。使用电池或其他电源连接到VBAT 脚上,当VDD 断电时,可以保存备份寄存器的内容和维持RTC的功能。原创 2023-05-16 10:59:56 · 4202 阅读 · 0 评论 -
按键的短按和长按检测
在中断服务函数中加一个比如10ms的延时函数,延时时间的长短取决于实际所用的按键特性,只要延时时间比抖动时间略大即可。原理很简单,加了延时就避开了抖动的这段时间,在延时之后判断引脚电平,如果为低电平就表示是按下。这个方法很简单,但是不好的地方是延时占用MCU资源。尤其是这里的BLE应用,在中断服务函数中执行时间长会引起蓝牙连接中断,所以这里不能这么用,我实际测试当按键按快一点就很容易引起蓝牙连接中断。需要注意的是:10ms定时器不是一个周期性的定时器,它是一次性的,即时间到了之后就停止计时了。原创 2023-05-15 10:17:47 · 1913 阅读 · 0 评论 -
STM32的功耗模式
有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for。在停止模式中可以选择电压调节器为开模式或低功耗模式,可选择内部 FLASH 工作在正常。区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所以从停止模式唤醒,并重新。:它除了关闭所有的时钟,还把 1.2V 区域的电源也完全关闭了,也就是说,从待机模。:仅关闭了内核时钟,内核停止运行,但其片上外设, CM4 核心的外设全都还照常。进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其 1.2V。原创 2023-05-11 10:35:35 · 1034 阅读 · 0 评论 -
STM32下载电路和启动模式
其中SW使用CLK和SWDIO两个IO引脚分别为PA14和PA13,因此最小系统核心板只有四个引脚。常用的下载模式有两种JTAG(5针)和SW(2针),两种下载模式的引脚是通用的。设置boot0和boot1控制,分别为PB2和PB8,通常为flash启动。原创 2023-05-03 15:55:20 · 1905 阅读 · 0 评论 -
嵌入式C语言基础(STM32)
define是C语言的预处理命令,它用于宏定义,用来将一个标识符定义为一个字符串,该标识符称为宏名,被定义的字符串称为替换文本,采用宏定义的目的主要是方便程序编写。一般放在源文件的前面,称为预处理部分。这个仅仅只是程序文本进行替换,通常用于修改某个数据较为麻烦,使用#define。如果要重命名一个变量,正确操作应该是使用typedef。用法:#define [别名] [字符串]其中,字符串可以是常数、字符串和表达式等。例如:#define Temp 25。原创 2023-05-05 13:31:19 · 2921 阅读 · 1 评论 -
玩转传感器----理解时序和数据采集(DHT11)
该文章以DHT11模块进行分析。原创 2023-05-04 20:38:29 · 1232 阅读 · 0 评论 -
CAN总线(HALL库使用)
1.闭环特点:速度快,距离短(40m)2.开环特点:速度慢,距离长(1000m)原创 2023-05-04 00:16:47 · 1565 阅读 · 1 评论 -
STM32CubeMX时钟树配置详解(F103)
学习时使用的是stm32f103系列芯片,文档的时钟树属实不适合新手阅读,STM32cube的功能很强大,时钟树清晰明了:首先我们要知道,芯片需要一个频率来进行工作,通常选用的是晶振来提供工作频率,很显然不在芯片内部,是。在上图中,我们仅需要关注蓝色框部分,这里我们(High Speed Extern--高速外部时钟),根据左边可知,输入频率设置为8Mhz。这里有同学可能会去想,为什么LSE时钟源是灰色的,因为在这里。原创 2023-05-03 10:22:34 · 5923 阅读 · 0 评论 -
串口信息打印规范(含打印技巧)
方法二中,若#define USER_MAIN_DEBUG,则使用user_main_printf();可以直接打印你所需的信息,而且自带\r\n,若未进行宏定义,使用对应函数则打印空白。在每一段串口打印的程序段中,加入#if Log和#endif,开启/屏蔽打印段仅需修改Log的值,为1/0-->打印/不打印信息。这里的串口打印使用printf函数,这里使用了printf重定向(借鉴的)日志级别:info(初始化)、debug(运行过程)、error(报错)[日志级别] 文件名 : 日志信息。原创 2023-05-02 15:02:10 · 2661 阅读 · 0 评论