关闭

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

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

C语言变量声明加冒号的用法

原文链接:博客园 C语言变量声明加冒号的用法有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就...
阅读(59) 评论(0)

utf-8 to unicode

一、utf-8 unicode utf-16 1、unicode 使用两字节表示字符。 2、utf-8 和 utf-16均为变长编码,使用1~4个字节来表示字符。 3、utf-8 和 utf-16是不一样的,汉子使用 unicode 表示是两个字节,utf-8 是三个字节,utf-16 是两个字节。 4、utf-8 只是 unicode的一种实现方式,类似的方式还有 utf-16 和 utf-32。...
阅读(149) 评论(0)

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

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

C语言 查找字符串子串 返回位置

主要的思路就是,不断的从母串 str1 中取出和子串长度相等的临时子串 temp_str,与子串 str2 进行比较。没有找到子串,返回 -1;成功找到子串,返回子串首字母在母串中的位置,该位置从 0 开始。#include #include char temp_str[30]; // 临时子串void ReadStrUnit(char * str,ch...
阅读(1227) 评论(0)

制作字库(Bin文件合并 C2BIN)

一、点阵文件生成 1、使用点阵字库生成器生成文字的点阵信息,采用 UNICODE 编码批量生成。 2、如果具有 C 文件的字库,例如 STM32 开发板的库函数 x:\en.stm32cubef4\STM32Cube_FW_F4_V1.14.0\Utilities\Fonts 中的字库 C 文件,可以使用 C2B转换助手,这个软件可以将 C 文件中的字符数组信息转换成 bin 文件。结果如下图所示:...
阅读(329) 评论(0)

Source Insight marco:MultiLineComment

一、使用场景Suorce Insight 中内置了一些实用的快捷键命令,可以在 Options->Key Assignments 中看到。另外,SI 还提供了用户自己添加功能的方法,就是 marco 指令。SI 内置了 13 种快键指令,例如:Marco: KillLine //删除整行 Marco: PasteKillLine //粘贴刚刚删除的一行 ...只不过默认这些功能都是没有绑定...
阅读(346) 评论(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...
阅读(112) 评论(0)

Source Insight 更新4.0版本

一、使用体验 source insight 终于大版本更新了。我开始使用 SI 是去年,那时候是 3.5 的版本,就觉得这是一款神器,搭配 Keil 和 IAR 等编译软件使用,可以提高单片机编程的效率。SI 有很多的特性是 keil 和 IAR 不具备的,作为一个代码编辑软件来说,很多功能确实很强大。只不过官方久久不更新,所以很多现在主流 IDE 或者代码编辑器的一些实用功能都不支持。这次更新,...
阅读(1554) 评论(0)

f_open()使用错误记录

一、现象调用函数 f_open() 后,程序崩溃,调试后发现,单片机产生硬件中断,即软件跳入如下部分:void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ while (1) { BSP_LED_Toggle(LED3); } }二、错误代码代码错误处...
阅读(299) 评论(0)

STM32 SysTick定时器

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

STM32 延时函数高级用法分析

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

STM32 延时函数解析

一、函数原型STM32官方提供的函数库中,可以找到类似于 HAL_Delay() 这样的函数。这个函数的就是通过使用定时器,达到一个较为精确的时间延迟,提供给用户调用。这个函数一般包含在类似于 stm32f4xx_hal.c 这样的函数中。函数原型如下:__weak void HAL_Delay(__IO uint32_t Delay) { uint32_t tickstart = 0U;...
阅读(295) 评论(0)

FatFs 使用中文长文件名

一、说明 使用长文件名,一般会是在使用 f_readdir() 这个函数时碰到,这个函数的功能就是获取上一步使用 f_opendir() 打开的文件夹中的内容,并将文件信息保存到定义的结构体。结构体内容如下, 里面包含有文件大小,上一次修改日期,文件属性,文件名等。可见,普通文件名是存在一个 fname[13] 的数组里的,这就使得长文件名无法正常显示。而长文件名是一个指针,这个指针指向的数...
阅读(262) 评论(0)

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

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

BCM2835 芯片数据手册(中文翻译)

1 前言1.1 概述BCM2835 具有以下可以被 ARM 安全使用的外设: 定时器 中断控制器 GPIO USB PCM/I2S DMA I2C 主机 I2C/SPI 从机 SPI0,SPI1,SPI2 PWM UART0,UART1 本数据手册旨在对这些外设的细节进行描述,以方便开发者对该芯片移植操作系统。有一些被 GPU 控制的外设将不会出现在本数据手册。不推荐从 ARM 访问这些外设。1.2...
阅读(2489) 评论(0)

关于嵌入式系统的学习路线图

来源:本文乃同济大学软件学院王院长(JacksonWan)在同济网论坛发表的帖子《谈谈软件学院高年级同学的学习方向》的第二部分。三部分依次为:一、关于企业计算方向;二、关于嵌入式系统方向;三、关于游戏软件方向。 嵌入式系统方向 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏...
阅读(273) 评论(0)

STM32 BootLoader升级固件

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

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

本文同步至个人博客:cyang.techstatic __inline这条语句在IAR和Keil下的需要写成不同的形式,否则会报错。 如下: 1、IAR错误 2、IAR正确 3、Keil错误 4、Keil正确 总结就是,在IAR环境下,需要写成static inline,而在keil环境下,需要写成static __inline...
阅读(1128) 评论(2)
23条 共2页1 2 下一页 尾页
    个人资料
    • 访问:209172次
    • 积分:2689
    • 等级:
    • 排名:第13476名
    • 原创:89篇
    • 转载:3篇
    • 译文:1篇
    • 评论:59条
    文章分类
    最新评论