STM32H7 SPI 踩坑记录

在使用 Art-Pi 的过程中,发现 SPI 正常初始化后调用发送函数卡死在:

1
2
3
4
5
/* Wait for Tx (and CRC) data to be sent */
if (SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_EOT, RESET, tickstart, Timeout) != HAL_OK)
{
SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG);
}

【项目笔记】STM32 BootLoader(一) 文件系统

首先放上 项目主页

简单的介绍一下这个 BootLoader:利用 STM32 提供的 USB FS 接口,并设置为 大容量存储设备(MSC, Mass Storage device Class),并在内存中虚拟出一个 FAT16 的文件系统,以此达到让烧录和读取 Flash 像用 U 盘拷贝文件一样便捷。

系统结构如下图所示,这篇文章先介绍一下最主要的 文件系统 部分:

image-20210216134129762

TinyUSB 的移植

TinyUSB 是一个开源的的跨平台 USB 主机/设备协议栈,用于嵌入式系统,它是内存安全的,没有动态内存分配,同时也是线程安全的,所有的中断事件都会被推迟,然后在非中断服务函数中处理。目前已经支持许多主流嵌入式平台。

这篇文章就介绍一下如何将 TinyUSB 添加至项目中,这里以 STM32 平台为例。

image-20210207132819334

在Linux中控制GPIO

在 MCU 中,最基本的功能莫过于对 GPIO 的控制,但是在 Linux 中,我们要怎样才能通过代码实现对芯片的控制呢?经过了一天的折腾,我终于找到了使用 C 语言的正确打开方式。

image-20210125210553261

STM32 CMake 模板

一篇久违的文章。

上个学期因为各种 B 事太多了,一直抽不出时间来更新博客。

相比起 MakefileCMake 就要简洁许多,这就分享一个 STM32 的 CMakeLists 模板: