推荐阅读最新更新时间:2024-11-13 13:00
程序结构理解(2) 以stm32为例
stm32启动流程分析 这个是一个汇编与c语言结合的流程 stm32入口为 startup_stm32f10x_hd.s (即第一个执行的文件) 在这个文件中首先定义定义CSTACK数据段和.intvec代码段还有全局函数和全局变量 然后就是向量表 在然后就是向量表中的定义了各个函数。 同时复位函数作为程序运行的第一个函数 里面设置了时钟和main入口等 就这样进入了main 然后就调用了各个外设资源 流程大致总结如下 大概意思就这样吧
[单片机]
STM32中断过程详解
对于 STM32 讲(还是以Timer2例),外部中断通道位置 28(35 号优先级)是给外部设备 TIME2 的,但 TIME2本身能够引起中断的中断源或事件有好多个,比如更新事件(上溢/下溢) 、输入捕获、输出匹配、DMA 申请等。所有TIME2 的中断事件都是通过一个 TIME2 的中断通道向 STM32 内核提出中断申请,那么 STM32 中如何处理和控制 TIME2 和它众多的、不同的、中断申请呢? 1.因为cortex_m3 内核对于每一个外部中断通道都有相应的控制字和控制位,用于单独的和总的控制该中断通道。它们包括有: 中断优先级控制字:PRI_n(前面有提到过) 中断允许设置位:在 ISER 寄存器中 中断允许
[单片机]
STM8L052定时器1配置30S
@ STM8L TIM1相关配置 Tim1基本介绍 TIM1由一个由可编程预分频器驱动的16位上下自动重载计数器组成。定时器可用于多种用途,包括: •时基生成 •测量输入信号的脉冲长度(输入捕获) •生成输出波形(输出比较,PWM和单脉冲模式) •各种事件的中断功能(捕获,比较,溢出,中断,触发) •捕获,比较,溢出事件的DMA请求功能 •与其他定时器或外部信号同步(外部时钟,复位,触发可校准)。 该定时器非常适用于各种控制应用,包括那些需要具有互补输出和死区时间插入的中心对齐PWM功能的应用。 定时器时钟可以来自内部时钟,也可以来自可通过配置寄存器选择的外部源。 配置 以下代码 自己配置了一个30S定时器,使用系统内部高
[单片机]
STM32的USARTx中u3_printf函数解析
我们在STM32中常常使用printf来将信息打印至PC端控制台上。但是有这样一种函数,它可以把数据以我们指定的格式装进字符串中——sprinft和vsprintf。 ⑴ sprintf函数使用的方式如下: ① 将多个参数以指定格式写入字符串 int a=1,b=2; char s ; sprintf(s, a=%d,b=%d ,1,2); puts(s); 输出结果:a=1,b=2 ② 错误使用:在函数封装中使用 void Myprintf(const char* fmt,...) // 传递个数不定的参数 { char s ; sprintf(s,fmt); // 出现错误 puts
[单片机]
STM32、GD32、ESP32的区别
01 前言 STM32:意法半导体在 2007 年 6 月 11 日发布的产品,32位单片机。 GD32:兆易创新 2013 年发布的产品,在芯片开发、配置、命名上基本模仿 STM32,甚至 GPIO 和 STM32 都是 pin to pin 的,封装不改焊上去直接用。有时候 STM32 的源码不修改,重新编译烧写到 GD32 上就可以跑。当然也有很多不同,比如串口驱动、USB 、库文件等。 ESP32:乐鑫公司 2017 年开发的产品,和 STM32、GD32 不同,ESP32 主要面向物联网领域,支持功能很多,但引出 GPIO pin 脚很少,因此大多数 GPIO 都有很多复用功能。出厂就集成蓝牙、WiFi 等物联网
[单片机]
STM32 DMA简述
STM32 DMA简述 **DMA (Direct Memory Access) ** 直接内存存储器,在做数据传输时能够大大减轻CPU的负担。 DMA的作用 DMA提供了一个关于数据的高数传输通道,这个通道不占用CPU的资源。换句话说,通过DMA通道,你在传输大规模数据的时候CPU同时也能够去干其他事。 你可以控制DMA通道的接入口,灵活配置传输的数据源和目的地。以下几个是常用的DMA传输路径: 从外设到内存 从内存A区域传到内存B区域 从一个外设传输到另一个外设 从内存传输数据到外设 .... DMA流程分析 在stm32中,DMA是以类似外设的形式添加到内核之外的,下面我们来看具体的框图: 从上图我们可以看到,DMA通过
[单片机]
STM32引脚模式GPIOMode_TypeDef
① 浮空输入_IN_FLOATING //串口输入 ② 带上拉输入_IPU ③ 带下拉输入_IPD ④ 模拟输入_AIN ⑤ 开漏输出_OUT_OD ⑥ 推挽输出_OUT_PP //置位 ⑦ 复用功能的推挽输出_AF_PP //串口输出 ⑧ 复用功能的开漏输出_AF_OD 推挽输出与开漏输出的区别 推挽输出:可以输出高,低电平,连接数字器件; 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个
[单片机]
STM32系统时钟的监控和切换
在前一段时间的公司的项目中要求用到STM32这款处理器在外部晶振异常的情况下自动的切换到内部晶振,在网上找了N多的资料终于在网上找到了一个官方的研讨会的PPT里面简单的介绍了一下,于是顺着这个思路试着去编写代码,没想到官方提供的思路还蛮靠谱! —————————————————我是华丽的分割线——————————————————— —————————————————我是华丽的分割线——————————————————— 函数一、 void INIT_CLOCK(void) { #if 1 ErrorStatus HSEStartUpStatus; RCC_DeInit(); //复位RCC寄存器 RCC
[单片机]