花了一天的时间,总算是了解了SystemInit()函数实现了哪些功能,初学STM32,,现记录如下(有理解错误的地方还请大侠指出):使用的是3.5的库,用的是STM32F107VC,开发环境RVMDK4.23我已经定义了STM32F10X_CL,SYSCLK_FREQ_72MHz函数调用顺序:startup_stm32f10x_cl.s(启动文件) → SystemInit() →
转载
2024-04-26 17:59:03
123阅读
一、流程:1、 怎么分配bootloader和app的空间2、 怎么得到数据和写入flash3、 怎么从bootloader跳转到app4、 怎么设置App的中断向量5、 App中怎么生成bin文件6、程序执行的流程二、具体实现1、怎么分配bootloader和app的空间 因为我用的是stm32f103c8t6,它的flash的大小是6
1. 中断和异常的区别1.1 中断是指系统停止当前正在运行的程序转而其他服务,可能是程序接收了比自身高优先级的请求,或者是人为设置中断,中断是属于正常现象。1.2 异常是指由于cpu本身故障、程序故障或者请求服务等引起的错误,异常属于不正常现象。 Cortex-M3内核总共支持256个中断,其中包含16个内核异常和240个外部中断,但是各个芯片产商在设
flash 内存的和RAM中不同,RAM放data bass;falsh中text data ——因此数据和代码是分开存储的为哈弗结构,而x86RAM 较大,可以同时存下所以是冯诺依曼STM32的内存管理相关(内存架构,内存管理,map文件分析)目录收起一、FLASH 和 RAM基本概念1.1 FLASH是什么1.2 RAM是什么二、STM32的内存架构2.1 Cortex-M3的存储器映射分析2
转载
2024-07-04 11:52:44
133阅读
读取SD卡的函数分析就此就结束了。接下来就是分析文件系统了,以方便读取SD卡中的有用数据本篇文章对SD卡的操作基于STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\SDIO\uSDCard之中的文件。? 参考文件:STM32F10x_StdPeriph_Lib_V3.5.0(STM32标准库)主要的问题就是,本篇
转载
2024-03-23 11:14:50
214阅读
/*sys.h 今天我们来讲讲这个头文件*/
#ifndef __SYS_H //头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个
转载
2024-07-29 16:43:27
83阅读
主要针对一些使用较多、但本人并不十分清楚其作用的stm32官方.c/.h文件进行系统的梳理。贴上官网标准库下载地址(操作如下图),或是直接下载这个附件。 目录简介工程目录1、misc.c/h2、startup_stm32f10x_hd.s3、system_stm32f10x.c/h5、stm32f10x_conf.h6、stm32f10x_it.c/h7、core_cm3.c/h8、stm32f1
机制分析上电后默认使用的是内部的HSI,一般工作在8MHz,且准度不可靠,标准库会调用启动代码和system_stm32f4xx.h/system_stm32f4xx.c中的相关函数将系统时钟选为HSE+PLL 168MHz。注意,若你没有使用标准库,而是在KEIL的 运行时环境设置 界面选择添加的 CORE和S文件,则不会切换时钟(不包含相关函数),而是默认使用HSI。使用HSE和PLL的时钟路
1、STM32分为片上内存和片外内存。
(1)片上内存
用于任务栈,变量等。
(2)片外内存
一般编程人员会自己写内存管理方便的函数。例如通过总线挂载一个16M的内存,地址0x68000000。用户可以管理一个指针,通过移动指针来管理这块内存。
包括分配和释放。
typedef struct
{
WORD wFlag;
WORD
GPIOx_CRL(x=A~E) 地址偏移:端口配置的初始地址加上偏移地址就是该特殊寄存器的地址 GPIO通用输入输出8种工作模式 1.浮空输入模式: (1)当GPIOx_CRL或GPIOx_CRH寄存器的CNF[1:0]位设置为01,并且MODE[1:0]位设置为00时 (2)STM32复位之后默 ...
转载
2021-04-08 13:51:00
891阅读
2评论
stm32在freertos系统下使用串口DMA接收方式对接freemodbus-rtu协议栈 文章目录stm32在freertos系统下使用串口DMA接收方式对接freemodbus-rtu协议栈前言码农工程师,人狠话不多,大家多看图和代码!!!一、准备工作cubemx配置dma初始化的一个注意点二、拆解freemodbus1.porttimer.c文件不再使用(不使用定时器判断接收完成),接口
转载
2024-03-17 00:43:12
1176阅读
点赞
1评论
本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看。第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED。。。第一步,建立一个文件夹0.0第二步,打开keil,建立工程在弹出来的对话框中选择你所用的STM32的芯片。在接下来弹出来的对话框中选择是,这样keil就帮我们建立好了启动文件。 第三步,新建一个main.c文件,并添加到
转载
2023-06-19 15:27:24
969阅读
一、SysTick基础简介:SysTick系统定时器是 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3
转载
2024-05-16 14:20:13
528阅读
总线矩阵 上图为stm32f4的总线矩阵,其中主控总线有8条,被控总线有7条,主设备和从设备通过各自的总线两两相交连接,图中两条总线相交且为圆圈的地方,表示这两条总线对应的主设备可以访问从设备,如I总线(指令总线),只有跟 M0、M2和M6这三根被控总线交叉的时候才有圆圈,就表示I总线只能跟这三根被控总线通信,这样就可以知道stm32f4的启动有三种分别是FLASH、内部SRAM、外部存储FSM
转载
2023-07-12 23:35:55
475阅读
STM32:嵌入式开发的强大选择在嵌入式系统开发领域,STMicroelectronics推出的STM32系列微控制器凭借其出色的性能和丰富的功能,已成为工程师们的首选之一。作为基于ARM Cortex-M内核的32位微控制器,STM32系列提供了从入门级到高性能的完整产品线,满足各种应用场景的需求。强大的硬件特性STM32系列最显著的特点是它的多样性。从低功耗的STM32L系列到高性能的STM3
模拟IICIIC协议GPIO配置根据时序图完成代码起始与停止信号等待应答读写字节检查设备是否连接 IIC协议I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、 CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。它是一个支持多设备的总线。“总线”指多个设备共
转载
2024-03-20 14:56:28
178阅读
基础元器件控制本篇博文将使用LED灯、蜂鸣器、开关元器件,学习如何使用HAL库进行GPIO的输入输出设置。博主采用如下开发板进行学习STM32的编程:LED灯LED(Light Emitting Diode),发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED可以直接发出红、黄、蓝、绿、青、橙、紫、白色的光。1.查看引脚首先,查看原理图,找到LED灯的引脚。
转载
2024-03-15 10:34:43
441阅读
背景在使用PyTorch深度学习框架的时候,不管是训练还是测试,代码中引入PyTorch的第一句总是: import torch 在Gemfield前述专栏文章里,我们已经得知,torch/csrc/stub.cpp链接libshm.so、libtorch_python.so、libcaffe2_gpu.so生成了_C.cpython-37m-x86_64-linux-gnu.s
转载
2024-06-22 15:38:58
248阅读
韦东山 数码相框 项目学习(三)freetype的移植要把freetype移植到STM32MP157上,我们主要完成四步源码下载解压配置、编译对应文件复制到对应目录一、源码下载解压源码的下载可以进入去https://freetype.org/这个网址进行下载,本次移植我们使用的是2.4.10版本,然后将下载下来的压缩包上传到服务器。然后执行tar -jxvf freetype-2.4.10.tar
转载
2024-04-15 15:33:26
620阅读
简介IAP(In Application Programming)即在应用编程, IAP 是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(
转载
2024-05-03 13:40:25
178阅读