推荐阅读最新更新时间:2024-03-16 16:02
STM32延时函数的三种方法——最好掌握第三种
单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时 delay_us( ) 和毫秒级 delay_ms( ) 。 1. 普通延时法 这个比较简单,让单片机做一些无关紧要的工作来打发时间,经常用循环来实现,不过要做的比较精准还是要下一番功夫。下面的代码是在网上搜到的,经测试延时比较精准。 // 粗延时函数,微秒 void delay_us(u16 time) { u16 i=0; while(time--) { i=10; // 自己定义 while(i--) ; } } // 毫秒级的延时 void delay_ms(u16 time) { u16 i=0; whil
[单片机]
STM32(Cortex-M3)中的优先级理解
很多人在配置STM32中断时对固件库中的这个函数NVIC_PriorityGroupConfig() 配置优先级分组方式,会很不理解,尤其是看中文翻译版的,因为中文翻译版里把这里翻译成 先占优先级和从优先级 这样翻译其实是不对的,很容易让人误解。为了便于大家理解,有必要先解释两个概念: 抢占式优先级/响应优先级: STM32(Cortex-M3)中有两个优先级的概念 抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的
[单片机]
STM32单片机之ADC学习总结
因为公司的产品上需要使用AD来检测电池电压,要求不是很高,突然想用下DMA+ADC+TIM,以前以为很简单,实际使用中让我觉得很惭愧,遇到的问题让我一下子蒙了,不停的查资料,不停的测试,终于一个一个的问题都解决了,同时对stm32的ADC有了新的认识,并且打算再闲暇时间内将stm32的资源尽量的实践下。 我用的是STM32F4 来调试ADC3+DMA+TIM1(单通道),首先我先查看了下DMA的资料,之后参考官方提供的ADC3+DMA很快可以正常读取数据,之后我直接添加定时器触发AD转换,结果失败,我开始查资料看手册,逐渐对这三者之间的关系有了一个认识 首先定时器产生触发信号,AD检测到转换信号后开始转换,每转换
[单片机]
SWD调试在STM32中REMAP调试的深入探究
首先说一下问题的现象,如果有这种现象的同学可以看看博主的这篇博文程序download一次后,第二次download就提示no target connect,除非长按reset键才能继续下载程序 首先上一组stm32的TIM2的端口使用组合有下面四种: 1.当不重映射时,默认TIM2四个的IO口是PA0、PA1、PA2、PA3 开启重映射__HAL_AFIO_REMAP_TIM2_ENABLE() 2.要使用PA15、PB3、PA2、PA3的端口组合,要调用下面的语句进行部分重映射: __HAL_AFIO_REMAP_TIM2_PARTIAL_1() 3.要使用PA0、PA1、PB10、PB11的端口组合,要调用下面的
[单片机]
stm32 swd接口定义
有时会有人问起STM32所支持的调试接口有哪些,下面的第一副图是个汇总表。该表按照内核所属对各STM32系列分别做了介绍,里面还包括了各系列芯片所支持的硬件断点数、MCO输出脚【时钟输出脚个数】等。其中ETM接口要结合具体芯片的封装来看,一些小封装芯片可能不支持ETM调试跟踪。 闲话少说,看图说话。 上面几幅图中除了第一幅图表外,其它均为第一幅图提供辅助说明,更多细节需查看相关技术手册。比方MCO输出功能怎么用,SWO怎么操作还需进一步查看相应技术文档。
[单片机]
【STM32】HAL库-外部中断
外部中断框图 产生中断 硬件触发外部中断 配置中断屏蔽寄存器中的屏蔽位,允许该外部中断请求 通过AFIO_EXTICRx配置GPIO线上的外部中断/事件,必须先使能AFIO时钟 选择外部中断的触发边沿,上升沿/下降沿/两者都检测 在NVIC中设置外部中断的优先级,并使能该中断 在中断发生后,在中断服务函数中,清除请求挂起寄存器中的对应位(写1清除) STM32参考手册中的描述:要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写’1’允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置’1’。在挂起寄存器的对应位
[单片机]
STM32中关于高电平有效,低电平有效的一点理解
在学习STM32中的过程中,经常会遇到“高电平有效”,“低电平有效”等字眼,初看时很多时候就会从字面上理解,认为高电平有效的意思就是有效电平是高电平,低电平有效的意思就是有效电平是低电平的意思。而实际上,这样的理解是有误的。下面咱们以STM32的定时器中输出比较通道为例: 这幅图实际上就是一个pwm波产生的过程,对定时器不了解的可以去查阅相关手册,现在我们先看图中标号1的输出模式控制器,这里模式是指pwm模式,他的意思就是可以通过配置寄存器TIMx_CCMR1的OC1M两位,来选择pwm的模式,但是关于模式选择,手册中有这样一句话:在向下计数时,一旦TIMx_CNT TIMx_CCR1时通道1为无效电平(OC1REF=0
[单片机]
STM32定时器的几种用法
一、常用的定时功能 (1)基本、通用、高级定时器都有最基本的定时功能,定时功能用到的函数如下: HAL_ TI M_Base_Init 初始化定时,包括分频、 预装值等。 HAL_TIM_ConfigClockSource 选择定时器的 时钟 源 HAL_TIM_Base_Start_IT 开始定时器 HAL_TIM_PeriodElapsedCallb ac k 超时后的回调函数 (2)Cubemx的配置,不管什么定时器,都是这个配置,注意开启中断,计算好最终的定时器时钟 (3)代码片段 1 void MX_TIM12_Init(void) 2 { 3 TIM_ClockConfigTypeDef sClo
[单片机]