推荐阅读最新更新时间:2024-03-16 14:27
STM32的Systick系统滴答定时器
Systick :系统心跳定时器,提供系统节拍 裸机程序中可作为独立的延时定时器 用途: 1.产生操作系统的时钟节拍 2.便于不同处理器之间程序移植 SysTick定时器被捆绑在NVIC中,异常号15 3.作为一个闹铃测量时间用于测量时间, 但当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作 它有四个寄存器 STK_CSR, 0xE000E010 -- 控制寄存器 STK_LOAD, 0xE000E014 -- 重载寄存器 STK_VAL, 0xE000E018 -- 当前值寄存器 STK_CALRB, 0xE000E01C -- 校准值寄存器 stm32的时钟源 选择外部时钟源时
[单片机]
stm32基础之独立看门狗
stm32基本都内置两种看门狗(另外还有外置的看门狗芯片),窗口看门狗和独立看门狗,两种看门狗的使用方法和应用场景各不相同,今天主要讲讲最常用的独立看门狗(工作这么多年,没见谁用过窗口看门狗,这种估计在时序严格的场合会用上)。 所谓独立(Independent watchdog),就是该看门狗有独立的时钟源供看门狗使用,VIP专属。这样即使程序跑飞,或者主时钟挂掉,照样运行。但是精度嘛,你懂的(VIP用户一般比较飘)。 所谓看门狗,外形虽然不像(一堆电子电路,肯定不像),但行为真的狗,还是一条疯狗。为啥这么说呢? 这只狗一定要在规定以内的时间(这个时间自己设置)喂食,超出一点都不行,否则就咬人(复位整个程序,让你的人生重新
[单片机]
STM32学习笔记——控制GPIO输出点亮LED灯
一.预备知识 使用51单片机控制IO口相对来说要简单得多,最小系统搭建完毕后直接通过软件往各IO口写 1 或者写 0 即可。但使用STM32控制IO口输入输出却远没有这么容易,经过一个下午的查阅文献及探索后,略微有了头绪。 个人所使用的STM32F103VBT6有100个引脚,其中有五组GPIO(GPIOA GPIOE),每组有16个GPIO端口(GPIOx_Pin0 GPIOx_Pin15)共80个,每个GPIO端口都有: 两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH); 两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR); 一个32位置位/复位寄存器(GPIOx_BSRR); 一个16位复
[单片机]
基于STM32单片机的红外测温仪的设计与实现
红外测温仪是一种将红外技术与微电子技术相结合的新型温度测量仪器。与传统接触式测温仪器相比,具有测温精度高、非接触、不影响被测对象温度场、响应速度快及稳定性好等一系列优点,在电力、石油、化工、医疗等领域得到广泛应用 。 热释电红外测温仪是利用热释电效应工作的一种新型红外测温仪。与其他传统测温仪相比,具有不需制冷、能在室温下工作和光谱响应宽等优点,且其灵敏度高、响应速度快、抗干扰能力强 。本文利用热释电探测器,结合32 bit ARM核处理器低功耗、高性能和低成本的优点,设计了一个以ARM微控制器STM32为核心的红外测温仪。 1 红外测温的原理 一切温度高于绝对零度的物体都在不停地向周围空间发出红外辐射能量,其辐射能量的大小及
[单片机]
stm32入门笔记(二)DMA接受中断的问题
在32的点子哥的例程当中,我发现DMA的例程,竟然是没有写DMA的接受的中断问题,这是一件让人很烦恼的问题。 于是我想,能不能自己写一个DMA的接受中断。 然后有了这样的一段中断函数的代码: void DMA1_Channel2_IRQHandler(void) {undefined if(DMA_GetITStatus(DMA1_FLAG_TC3)==SET) {undefined DMA_ClearFlag(DMA1_FLAG_GL3); } } 那么问题就会出现啦,你会发现,标志位总是没有置位。 那么为什么了? 因为DMA的发送是空闲中断,标志位。 而接受中断标志位则是
[单片机]
stm32相关位操作
stm32 , ,l=与&=~操作 0x0000 0001 4//右移四位 =0x0000 1000 0x0000 1000 4//左移四位 =0x0000 0001 l=操作 0xxxx xxxx l= 0x0000 0001 =0xxxxx xxx1 //保留数据置1的位 &=~操作 0xxxxx xxxx &=~ 0x000 0001 =0xxxxx xxxx &=01111 1110 //先取反再相与 =0xxxxx xxx0 //使原来置1的位置0,也就是取反
[单片机]
STM32 中断时间计算
定时中断发生的时间T: T = (arr+1)*(psc+1)/72M T=1/f 32的tclk已知 我们可以直接用这个tclk 去除我们设定的分频系数(psc+1) 也就是把tclk 分成了(psc+)份 这个分频系数的范围在1~65535 这样得到tclk/(psc+1)也就得到了定时器最终的频率 我们在倒过来 得到我们的周期(psc+1)/tclk 在乘上我们的装载值 也就得到我们想要的时间了 例
[单片机]
在STM32实现命令行
一、前言 工作中的开发环境都是基于linux命令行交互,作为命令行的重度使用者,玩单片机也要使用命令行工具,百度了一些命令行工具,有几个不错的开源 cmd 交互工具,主要看了 finsh和 nr_micro_shell 两个开源项目。Finsh 功能上限较多,但资源占用比较高,nr 有基本功能,且占用 MCU 资源较少,Github 给出的对比列表如下: Nr 和 Finsh 编译资源对比: 原始工程 添加nr_micro_shell增加量 添加finsh增加量 ROM 63660 +3832 +26908 RAM 4696 +1104 +1304 综合衡量了一下,移植 nr 作为后续项目的一个命令行交互。本篇文章分
[单片机]