随笔分类 - STM32
使用HAL库
摘要:硬件:STM32F103C8T6 平台: ARM-MDk V5.11 前面一篇文章讲过如何利用定时器测量信号的频率(),使用的是定时器的捕获/比较单元(Capture/compare),它也可以测量输入信号的脉冲宽度。 利用定时器测量脉冲宽度有两种方法。 方法1: 在捕获中断函数里改变捕获信号的触发
阅读全文
摘要:硬件:STM32F103C8T6 平台:ARM-MDk V5.11 原理 利用STM32F10x的定时器的捕获(Capture)单元测量输入信号的频率。 基本原理是通过两次捕获达到的计数器的差值,来计算输入信号的频率。假如第一次捕获时计数器的值为Val1,第二次捕获计数器的值为Val2, 定时器的时
阅读全文
摘要:输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。以下是对脉冲宽度及频率的计算。 #1、脉冲宽度 如下图所示,采集该高电平脉冲的宽度,只需要进入输入捕获上升沿检测,记录当前的发生上升沿时的CNT值,再进行输入捕获下降沿检测,
阅读全文
摘要:概述 本教程主要根据官方推荐的教程进行改编,详细信息请参考OTA Downloader软件包STM32 通用 Bootloader 本例程通过自己实际搭建环境,测试总结。 bootloader的制作 文末有我已经做好的Bootloader文件,可供参考 打开bootloader制作的网址Bootlo
阅读全文
摘要:前言: 由于之前对STM32Fxx系列相对熟悉,所以涉及到超低功耗设备时,自然就选用STM32家族的STM32Lxx系列产品。 STM32L151C8T6 功能特点: (1)Flash:64k (2)RAM:10k (3)EEPROM:4k (4)USART:3 (5)SPI:2。 了解一个CPU,
阅读全文
摘要:前提 想来做iap升级了,应该不是什么新手。 下面的程序需要用到一些简单的功能 串口收发数据开关总中断虽然本文标题是实现远程固件更新,但是具体远程方案本文不做详细说明,重点在于介绍mcu接收到新的固件后怎么保存更新,以及更新失败回滚等。下面简单说明一下远程的事情。 stm32的通信方式有串口,spi
阅读全文
摘要:写在前面:三周之前,我突然想写一个远程升级的程序。那个时候我只是大概知道IAP的意思是在应用编程,但怎么编,我还一无所知。我给自己定下一个个阶段目标,从最基础的代码一点点写起,解决一个又一个的问题。三个周之后,我用自己设计的方法实验了50多次,无一例升级失败。 三个周来,遇到了很多的不解、困惑,甚至
阅读全文
摘要:新型的按键扫描程序不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,
阅读全文
摘要:RTOS版本:FreeRTOS_V8.2.2一、下载FreeRTOS源文件 这个可以在百度上下载,或者在官网上面下载http://www.freertos.org/a00104.html 下图位置即可下载了 目前最新版本是8.2.2二、下载源码下来,解压,将源码添加到工程 2.1 新建一个移植工程(
阅读全文
摘要:函数简介 函数功能:把格式化的数据写入某个字符串 头文件:stdio.h 函数原型:int sprintf( char *buffer, const char *format [, argument] … ); 返回值:字符串长度(strlen) 参数说明及应用举例 sprintf格式的规格如下所示
阅读全文
摘要:STM32三种启动模式对应的存储介质均是芯片内置的,它们是:1)用户闪存 = 芯片内置的Flash。2)SRAM = 芯片内置的RAM区,就是内存啦。3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有
阅读全文
摘要:在STM32的数据手册的管脚分配图中可以看到:PC14与OSC32_IN公用一个引脚,PC15与OSC32_OUT公用一个引脚,它们的使用方法如下: 当LSE(低速外部时钟信号)开启时,这两个公用管脚的功能是OSC32_IN和OSC32_OUT。当LSE(低速外部时钟信号)关闭时这两个公用管脚的功能
阅读全文
摘要:在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器,另一个是程序看不到的移位寄存器,对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束。 当USART_DR中的数据传送到移位寄存器后,TXE被设置,此时移位寄存器开始向TX信号线按位传输
阅读全文
摘要:在MDK内,与NVIC相关的寄存器,MDK为其定义了如下的结构体: typedef struct { vu32 ISER[2]; //2个32位中断使能寄存器分别对应到60个可屏蔽中断 u32 RESERVED0[30]; vu32 ICER[2]; //2个32位中断除能寄存器分别对应到60个可屏
阅读全文
摘要:1、在PROTEL99SE中,怎样改变敷铜的线宽? 规则 manufacturing polygon connect style 里面设置;或Power polygon connect style里面。 2、99se中覆铜参数说明?
阅读全文
摘要:STM32的IAP功能确实方便,以前对此如何实现有所了解,但是一直没去测试,这两天来练了下,可谓困难重重,搞了两天问题也一一解决,下面做些简要的笔记 IAP就是在线应用编程,方便程序升级,可以不用打开产品,直接通过串口升级,那么就需要一个引导程序(大神们喜欢称bootload),一个APP程序(实际
阅读全文
摘要:一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备。而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零。如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的。 在给出方法之前,先来
阅读全文
摘要:文章结构: ——> 一、定时器基本介绍 ——> 二、普通定时器详细介绍TIM2-TIM5 ——> 三、定时器代码实例 一、定时器基本介绍 之前有用过野火的学习板上面讲解很详细,所以直接上野火官方的资料吧,作为学习参考笔记发出来 二、普通定时器详细介绍TIM2-TIM5 2.1 时钟来源 计数器时钟可
阅读全文
摘要:一、介绍 首先我们需要了解一个内存映射: stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同。 RAM起始地址是0x2000 0000,结束地址是0x2000 0000加上芯片的RAM大小。不同的芯片RA
阅读全文
摘要:一、串口一的配置(初始化+中断配置+中断接收函数) 二、串口二的配置(初始化+中断配置+中断接收函数) 三、串口三的配置(初始化+中断配置+中断接收函数) 四、串口四的配置(初始化+中断配置+中断接收函数) 注意串口四的中断优先级没有贴出来,和前面的三个一样的配置,为了不占用过多的篇幅就不贴中断优先
阅读全文

浙公网安备 33010602011771号