
STM32
文章平均质量分 86
南有孤岛°
I've been trying!!!不转嵌入式心有不甘!!!需要程序源码联系我
展开
-
STM32_串口重定向
最近在学习LVGL时遇到了一个坑,我原来使用的重定向方法必须要勾选Use Micro LIB,否则程序会卡死,但是在移植LVGL时又发现不能勾选Use Micro LIB,否则会报错。那么有没有什么方法能让printf和LVGL都能正常使用呢,在网上查了查,发现了如下解决思路,在这里做个记录。原创 2024-04-05 17:00:58 · 706 阅读 · 0 评论 -
FreeRTOS_Stm32F407系列单片机标准库移植
链接:FreeRTOS此时我们需要下载以下两个仓库,点进去按下面的步骤下载就行了,另一个也是这样下。链接: FreeRTOS官网打开链接我们可以看到有两个下载选项,我们下载第一个就行。下载速度较慢。链接:https://pan.baidu.com/s/1x00zgnJfCae75DpJ1W4RIg?pwd=1233提取码:1233在keil中点击魔术棒,进入“C/C++”,在Include Paths中添加FreeRTO、src、inc、port路径。按下面的操作分别添加src文件夹和por原创 2024-02-01 00:33:28 · 2157 阅读 · 0 评论 -
STM32F407_多点电容触摸(GT911)驱动
做毕设用到了电容触摸屏,移植了几天内才整好。在网上找到的好多例程都是电容屏、电阻屏都融合到一起去了,对于新手来说,不是太好理解,所以我来分享一下我的认识、例程和学习过程中遇到的问题以及要注意的点。在最后,我会放一个例程的网盘链接。GT911、GT928、GT9147都属于GT9系列非单层多点触控芯片,他们支持的触控点数不同(GT928支持10个点、GT911支持5个点)、驱动和感应通道也可能不同。可是他们的寄存器和IIC通讯时序是相同的,也就是说驱动程序是兼容的。原创 2024-03-17 20:43:07 · 11836 阅读 · 2 评论 -
STM32F407_外部中断
注释很详细,放心食用。STM32F4的每个IO都可以作为外部中断的中断输入口,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断线上都设有状态位,每个中断/事件都有独立的触发(上升沿、下降沿、上升下降沿)和屏蔽设置。EXTI线0~15:对应外部IO口的输入中断。EXTI线16:连接到PVD输出。EXTI线17:连接到RTC闹钟事件。EXTI线18:连接到USB OTG FS唤醒事件。EXTI线19:连接到以太网唤醒事件。原创 2024-03-14 19:37:10 · 2322 阅读 · 2 评论 -
STM32F407_硬件IIC(库函数)
在有必要注释的部分都进行了注释,可放心食用!原创 2024-03-13 11:41:03 · 1082 阅读 · 0 评论 -
WS2812B彩灯 STM32库函数开发:PWM+DMA(stm32f407VET6)
WS2812B是一种常见的RGB LED灯带,每个灯珠内部都有一个芯片控制,通过发送特定的时序数据来控制其亮灭。发送数据时,需要按照一定的时序发送24位RGB数据,其中高位在前低位在后,格式为GRB。发送数据时,需要注意不仅仅是发送高电平或低电平,而是要发送占空比不同的PWM波,比如给予一定的高电平和低电平时间。重置码是发送一个持续280us的低电平信号。可以先发送一组24位的数据,然后接一个重置信号表示一组结束。原创 2024-02-17 21:43:51 · 4693 阅读 · 3 评论 -
USB_CH340一键下载电路
CH340是一个USB总线的转接芯片,可实现USB转串口或者USB转打印口。在设计中,主要关注UD+、UD-、TXD、RXD、DTR# 、RTS#的连接。原创 2024-01-13 16:48:26 · 6961 阅读 · 1 评论 -
STM32_通过Ymodem协议进行蓝牙OTA升级固件教程
作为单片机进阶能力,IAP升级固件的学习是非常重要的。想直接看如何操作的从第三条开始看。IAP,全称是“In-Application-Programming”,中文解释为“在程序中编程”。IAP是一种对通过微控制器的对外接口如:USART,IIC,CAN,USB,以太网接口甚至是无线射频通道等对正在运行程序的微控制器进行内部程序的更新的技术。与IAP同级的其它两种下载方式是ISP和ICP。ICP:使用SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合使用。ISP。原创 2023-12-17 21:40:49 · 7414 阅读 · 4 评论 -
STM32_启动流程详解
最近在学习IAP远程OTA升级单片机固件程序,发现自己对单片机的启动流程还不是那么了解,就总结整理一下吧。1.内核初始化;1.内核复位和NVIC寄存器部分清零;2.内核设置堆栈:内核从向量表0地址读出堆栈地址,并设置主堆栈指针(SP_main);3.设置PC和LR寄存器a. LR设置未初始复位值0xFFFF FFFF。原创 2023-12-16 16:26:23 · 2359 阅读 · 0 评论 -
STM32_串口下载程序
使用调试器下载程序又快有稳定还能使用调试功能,当然是下载调试的首选。但是拓展下串口下载程序的知识作为下载的备选方案也是很有必要的。原创 2023-12-14 17:35:06 · 3771 阅读 · 0 评论 -
FreeRTOS_调试与优化
在使用FreeRtos进行开发的过程中,我们通常需要了解系统的运行状态、内存、CPU使用情况等信息,来确保系统能够长期稳定的运行。当前任务的剩余内存;当前任务历史最小内存;系统总的剩余内存;系统运行的总时间;单个任务的运行时间;每个任务占用的CPU时间;1/*为1时启用可视化跟踪调试*/1。原创 2023-12-09 14:28:00 · 2432 阅读 · 0 评论 -
Stm32_串口的帧(不定长)数据接收
使用串口传输数据时,因为串口是异步通信协议,所以我们需要去判断哪是一帧完整的数据,并进行数据的处理。加固定的帧头和帧尾串口中断接收+用定时器来判断帧结束串口中断接收+利用串口空闲中断来判断帧结束直接存储器访问(Direct Memory Access),简称DMA。DMA是CPU一个用于数据从一个地址空间到另一地址空间“搬运”(拷贝)的组件,数据拷贝过程不需CPU干预,数据拷贝结束则通知CPU处理。因此,大量数据拷贝时,使用DMA可以释放CPU资源。原创 2023-12-06 19:15:24 · 3624 阅读 · 0 评论 -
FreeRTOS中实现精确的us级延时
在使用通讯协议来驱动外设的时候需要遵循严格的时序逻辑,往往用到微秒(us)级别的延时,在裸机编程中可以使用SysTick定时器、软件堵塞等方法来实现;但是在FreeRTOS中,SysTick定时器则是用来作为FreeRTOS系统时钟的,并且它提供的API仅能实现毫秒级别的延时,所以在网上查找资料总结了几个在FreeRTOS上运行的,可以实现us级别延时的几个方案。SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号15)。滴答中断对操作系统尤其重要。原创 2023-12-04 10:21:46 · 11688 阅读 · 1 评论 -
FreeRTOS_Stm32F103系列单片机标准库移植
下面的教程是基于从github下载压缩包进行的,最好下载这个或者直接看3.1,从我百度网盘下载。如果是别的下载源也问题不大,大同小异。链接:https://pan.baidu.com/s/1x00zgnJfCae75DpJ1W4RIg?链接:https://pan.baidu.com/s/1E_bi4nIzayskaVl3YrLBGA?按下面的操作分别添加src文件夹和port文件夹下的所有.c文件。打开链接我们可以看到有两个下载选项,我们下载第一个就行。点进去按下面的步骤下载就行了,另一个也是这样下。原创 2023-11-26 20:54:57 · 2142 阅读 · 30 评论 -
上下拉电阻详解
本文档根据(B站UP主-爱上半导体)视频编写链接:上拉电阻链接:下拉电阻上拉、下拉电阻统一称为拉电阻,作用是将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉)上下拉电阻的阻值选择最常用的是10K。原创 2023-11-10 21:47:09 · 4264 阅读 · 1 评论 -
STM32故障记录——printf重定向
项目场景:在使用STM32的串口打印数据时,对printf进行重定向,遇到的一些报错和不能正常使用的问题,在这里做下记录!此警告通常是因为没有包含头文件“stdio.h”,因为printf也是一个库函数,它的声明在stdio.h文件中。一般是因为没有在“魔法棒”中勾选“Use MicroLIB”.原创 2023-10-30 20:00:55 · 709 阅读 · 1 评论 -
ARM架构简明教程
根据韦东山老师视频教程编写。变量能读能写,故保存在内存中。因为内存具有较大的存储容量和较高的读写速度,可以方便的存储和读写程序中的数据,相比之下,寄存器容量较小,且个数有限,仅能存储少量数据。所以,程序中的变量通常会先储存在内存中,然后被操作时暂存到寄存器中进行,以提高程序的运行效率.而Flash中存储的是程序代码和常量数据,不适合存储变量数据,Flash虽然可读可写,但对其进行写操作十分复杂。原创 2023-10-29 22:22:46 · 203 阅读 · 0 评论 -
利用D触发器做正交编码器鉴相
在Stm32中,定时器有专门的编码器测速模式来实现硬件测速和鉴相(需要占用一整个定时器),但是在实际应用中,我们的定时器资源是很有限的,而且有些MCU是不带编码器测速模式的。正交编码器会输出A、B两相方波信号,我们可以直接测单位时间内任一相方波信号的上升沿或下降沿的个数来等效出一个速度,但是要测电机的转向,还需要看A、B两相的相位差。在AC2、AC1分别接入A、B两相方波信号,然后在使用时用单片机读取OUT1的电平,即可判断当前电机转向(实际的电机转向和高低电平的对应关系需要具体判断)。原创 2023-10-19 22:10:04 · 998 阅读 · 0 评论 -
Stm32最小系统板的构成详解
(1)上电复位:在上电瞬间,C2电容的充电电流很大,电容相当于短路,RESET出现短暂的低电平,这个低电平会对单片机进行复位。在Stm32F103C8T6最小系统板中,有内部自带的一个8MHZ的RC时钟,外部8MHZ晶振(最常用,方便备频,频率稳定)和一个32.768KHZ的外部晶振(一般给实时时钟模块RTC使用)组成。stm32的工作电压一般是3.3V,在实际应用中,多是为其提供5V电源,然后经LDO(低压差线性稳压器)转为3.3V,另外电路中还要加些去耦电容对输入、输出电压进行滤波,稳定电压。原创 2023-10-19 19:44:51 · 11652 阅读 · 1 评论