关闭
当前搜索:

STM32 定时器输入捕获实现红外遥控数据接收

之前已经写过了一个使用定时器普通计时功能来识别红外遥控数据的文章。本次是使用定时器输入捕获来实现,这种方法比起定时器普通计数来说要更加复杂一些,不过效果会更好。 一、原理1、红外发射协议 红外发射协议已经在之前的文章中写过,在此就不赘述。 2、定时器计数和输入捕获 定时器就是按照一个特定的频率对计数值进行加一或减一操作,当数值溢出时则产生一个标志或中断。 定时器的输入捕获就是可以测量输入信号的脉冲宽...
阅读(278) 评论(0)

STM32 定时器实现红外遥控数据接收

一、原理1、红外发射协议 红外通信的协议有很多种。这个实验使用的是NEC协议。这个协议的采用PWM的方法进行调制,利用脉冲宽度来表示0和1。 NEC 遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、控制码、控制反码均是 8 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性(可用于...
阅读(395) 评论(0)

STM32 BSRR BRR ODR 寄存器解析

一、用法经常会看到类似如下的宏定义语句,用于对已经初始化后的 IO 口输出高、低电平。#define SET_BL_HIGH() GPIOA->BSRR=GPIO_Pin_0 #define SET_BL_LOW() GPIOA->BRR=GPIO_Pin_0其作用类似于如下两个库函数,void GPIO_SetBits(GPIO_Typedef* GPI...
阅读(315) 评论(2)

WIN10 更新系统后,串口无法连接

一、问题 1、WIN10 更新系统后,无法连接 ST 开发板上 USB 转串口,但可以正常的下载程序。 二、解决方法 1、尝试更改 COM 口,例如从 COM3 转为 COM4。 2、尝试更新 ST-LINK 的固件版本,如下: 之后便可正常使用了:...
阅读(1770) 评论(0)

I2C Bit-Bang 程序分析

一、Bit Bang关于 Bit Bang 的解释:Use software to control serial communication at general-purpose I/O pins,简单来讲就是使用软件通过 IO 脚去实现 I2C 的时序从而使用 I2C 协议进行通信。这样做的好处是可以突破硬件上的限制,例如芯片不具有硬件 I2C 模块,或者硬件 I2C 模块损坏,又或者使用硬件 I...
阅读(268) 评论(0)

STM32 SysTick定时器

一、说明SysTick 定时器是实时操作系统专用的,但是也可以作为一个标准的递减计数器使用。它具有以下特点: 1、24位递减计数器(16777216) 2、自动装填能力 3、计数器达到 0 时,有可屏蔽的系统中断产生。 4、可编程时钟源 (HCLK 或者 HCLK/8) 该定时器具有四个寄存器,如下表所示:一般,该定时器的计数周期为一毫秒,则寄存器LOAD中的值根据 MCU 主频的不同而不同。例如,...
阅读(330) 评论(0)

STM32 延时函数高级用法分析

一、使用场景第一种情况,在使用普通 STM32 延迟函数,类似于 HAL_Delay(time),由于该函数是使用循环去判断及延时的,所以在执行该函数时整个程序会在此处等待定时器的中断服务函数修改参量使得循环判决条件不成立,从而继续程序的执行,同时也达到延迟时间的效果。由于使用的是系统的定时器进行延迟,所以时间相对准确。第二种情况,当需要周期性的执行一个任务时,将这个函数放在某个定时器的中断服务函数...
阅读(1482) 评论(0)

JRE运行环境出错导致无法安装STM32CubeMX解决方法

一、问题安装 STM32CubeMX 一直提示需要安装JAVA运行环境,提示界面如下: 但实际上已经正确安装了JRE,如下为JAVA版本。 问题原因:我的电脑上具有很多版本的JRE,并且有一个版本注册表信息出错,所以无法正常卸载。二、解决方法 1、先完整卸载目前已安装的JAVA版本,可利用官方提供的卸载工具。 如上图所示,电脑里安装了4个版本的JRE,只需安装最新版的就好,其他直接卸载...
阅读(1427) 评论(1)

STM32 BootLoader升级固件

BootLoader关于Bootloader,从书上的文字描述,很难理解这个名词是什么,有什么用。这次用到了,算是有了更进一步的认识。一、知识点 1、BootLoader就是单片机启动时候运行的一段小程序,这段程序负责单片机固件的更新,也就是单片机选择性的自己给自己下程序。可以更新,也可以不更新,更新的话,BootLoader更新完程序后,跳转到新程序运行;不更新的话,BootLoader直接跳转到...
阅读(4792) 评论(0)

static __inline 在IAR和keil开发环境下的差别

本文同步至个人博客:cyang.techstatic __inline这条语句在IAR和Keil下的需要写成不同的形式,否则会报错。 如下: 1、IAR错误 2、IAR正确 3、Keil错误 4、Keil正确 总结就是,在IAR环境下,需要写成static inline,而在keil环境下,需要写成static __inline...
阅读(1855) 评论(2)

STM32固件库 assert_param函数

本文同步至个人博客:cyang.tech一、知识点-1、固件函数库通过检查库函书的输入来实现运行时间错误侦测。通过使用宏assert_param来实现运行时间检测。所有要求输入参数的函数都使用这个宏。它可以检查输入参数是否在允许的范围之内。 例如通过定义#define IS_ADC_ALL_PERIPH(PERIPH) (((PERIPH) == ADC1) || \...
阅读(237) 评论(0)

1602显示一排黑

今天在做频率计时候出现的问题。由于之前已经做出一块可以实现正常功能的板子,再做一块就没怎么注意细节。毕竟原理很简单,而且电路模块也不多。而出现的问题就是1602显示上面一排黑。这样的情况之前也有出现过。大概就是单片机没有给1602输出,或者输出有问题导致的。一般就是从单片机的P0口输出的电平的问题,比如两天线短路了。这样的问题之前是有出现过,然后用万用便检测一下,再重新焊接处理一下就可以解决这个问题...
阅读(711) 评论(0)

芯邦主控的U盘量产教程

今天同学U盘坏了,具体的情况就是不能存储文件,可以识别可以打开,就是存进去的东西拔下来再插进去就不在了。解决方法: 使用芯片精灵和量产工具轻松搞定。 1. 首先,用芯片精灵检测U盘主控芯片型号。 由图可知,主控为芯邦型号2198A。接下来去网上搜索这个型号的量产工具。 2. 量产工具如下图,免安装。插入U盘后,软件自动识别。点击全部开始,等待进度条结束即可。...
阅读(1206) 评论(0)

清华同方锋锐 u430 更换内存条教程

这款电脑的原装内存条为4G,且不支持双通道,所以当你想要扩展内存的时候,就需要将原装内存换下。而现在内存条的行情,更换8G是比较合适的选择,在200多块左右,16G 的价格很高。  这款笔记本比较薄,没有光驱。拆机也很简单,换内存条也很简单,以下是一些拆机图片。  这款笔记本的内存接口为mSATA 。拆机图 拆开背盖 这里要注意,背盖的螺丝有长短两种。短的只有两颗,在风扇处。 更换内存条。方法...
阅读(2671) 评论(0)
    个人资料
    • 访问:323429次
    • 积分:3477
    • 等级:
    • 排名:第10804名
    • 原创:94篇
    • 转载:3篇
    • 译文:1篇
    • 评论:81条
    文章分类
    最新评论