单片机学习笔记
文章平均质量分 94
智小星
这个作者很懒,什么都没留下…
展开
-
单片机开发入门---从零开始玩转FRDM-KL25Z
《西蒙游戏》是一款益智休闲类小游戏,它的游戏规则是,让玩家记住不同颜色的灯的亮灯顺序后,依次点击灯,如果次序与AI给予的次序相同,则游戏继续并增加难度,否则游戏结束,重置游戏。我们将使用开发板来实现改进版《新版西蒙》二、芯片资源介绍..................原创 2022-06-11 12:21:59 · 5053 阅读 · 2 评论 -
USB协议简介
1.USB简介USB,是英文 Universal Serial BUS (通用串行总线)的缩写,其中文简称“通串线”,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。 USB 是在 1994 年底由英特尔、康柏、 IBM、Microsoft 等多家公司联合提出的。2.USB的特点 (1) 简化计...原创 2018-03-27 11:18:04 · 2009 阅读 · 0 评论 -
SPI时序初步认识
一、基本概念 SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。总线结构如下图所示。...原创 2018-01-25 14:37:28 · 2593 阅读 · 0 评论 -
MPLAB X 编译出现(944)编译错误
开发工具:MPLAB X IDE v5.20芯片平台:PIC18F26K40在使用PIC单片机开发具备bootloader的程序时,需要分别创建两个工程,一个bootloader工程一个app工程,为了便于编译生成的HEX文件下载,可以使用MPLAB在app工程中直接加载boot工程,这样编译后会自动合并HEX文件,点击下载后即为boot+app的程序。在开发过程中发现在app工程中开启了看门狗模块以后,编译就会出现如下的错误:通过错误信息显示0x300004这个地址在boot和ap原创 2020-08-31 10:21:08 · 1286 阅读 · 0 评论 -
PIC18F26K40 芯片Flash读写函数
芯片平台:PIC18F26K40软件版本:MPLAB X IDE v5.20在使用MPLAB X编译器的过程中,使用自带的MCC代码生成工具,加入memory模块生成的flash读写接口,对单个地址读写时没有问题,但是在进行连续区域地址读写时,就会出现数据读写异常的情况,比如要进行bootloader程序的设计,使用memory的flash读写函数就会出现问题。经过一番摸索,发现使用MCC代码生成工具里面的bootloader模块,里面的flash读写接口是可以正常使用的,为了便于使用,对这个fla原创 2020-08-26 15:37:49 · 1865 阅读 · 1 评论 -
使用MPLAB X IDE合并boot和app程序
芯片平台:PIC18F26K40IDE版本:MPLAB X IDE v5.201. Flash空间划分2.合并IAP和APP程序2.1 IAP工程参数配置因为Bootloader程序的ROM大小为7K,所以在工程中需要设定IAP工程的ROM范围。2.2APP工程参数配置2.2.1 APP偏移地址设置程序默认使用APP1运行,需要设定其偏移地,即偏移Bootloader区域的空间大小。2.2.2APP ROM空间设置APP空间大小为28K,所以需要设定其..原创 2020-08-26 15:31:12 · 1477 阅读 · 0 评论 -
nRF Sniffer使用Wireshark抓包分析环境搭建
一、硬件要求二、软件要求原创 2018-06-22 19:53:38 · 10123 阅读 · 0 评论 -
STM32串口DMA传输不能使用的问题
1. 开发环境开发平台:官方开发板STM32F030R8-Nucleo开发软件:Keil uVision5.24开发库:STM32Cube_FW_F0_V1.9.02. 实验现象根据官方例程,将UART1的DMA传输配置更改为UART2,但是使用UART2时,DMA的中断都进入不了,一开始以为是时钟未开启导致的,后来仔细对比后并无异常。于是查看了STM32F030的参考手册,DMA...原创 2019-04-25 09:39:13 · 4343 阅读 · 0 评论 -
STM32F030R8-Nucleo使用PA2、PA3 UART2不能使用的问题
1. 开发环境开发平台:官方开发板STM32F030R8-Nucleo开发软件:Keil uVision5.24开发库:STM32Cube_FW_F0_V1.9.02. 实验现象根据官方例程,将UART1的配置更改为UART2,然后使用杜邦线接到PA2、PA3引脚,可串口就是无法收发数据。之后查看原理图发现,官方的Demo板,默认就没有将PA2、PA3扩展到外部引脚上,而是将这个U...原创 2019-04-25 09:25:22 · 2950 阅读 · 0 评论 -
STM32定时器的预装寄存器以及影子寄存器话题
经常有人问起预装寄存器和影子寄存器的话题,其实STM32相关系列的手册里有介绍,有文档做介绍,这里借花献佛地一起分享下。在谈预装寄存器及影子寄存器的差别前,不妨先对STM32定时器的时基单元做个基本了解。STM32各系列的定时器结构和框架基本是一样的,时基单元也一样。下面时基单元是以STM32F3系列为参考。时基单元中的TIMx_PSC、TIM_ARR两个寄存器加上捕捉比较...转载 2019-04-28 11:00:50 · 1401 阅读 · 1 评论 -
STM32堆栈空间大小设置
1. 设置堆栈空间大小在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。这也是为什么一个基础的工程编译后,RAM的空间也占用了1.6K左右的原因,因为堆栈的空间均分配在RAM中,可...原创 2019-04-18 18:48:44 · 35380 阅读 · 4 评论 -
RT1052-ADC问题
使用RT1052已经有一段时间了,在使用过程中也遇到了很多问题,这里针对ADC的使用作出如下的一些总结。1. ADC和ADC_ETC的区别使用RT1052时,会发现ADC和ST的有很大的区别。RT1050的ADC只能实现一些简单的功能,不具备扫描模式,适用于软件触发采集单个通道的应用,例如定时采集电池电量的任务。而要实现较为复杂的多个通道数据采集时,我们就需要用到ADC_ETC了,AD...原创 2018-12-14 19:54:55 · 5121 阅读 · 0 评论 -
代码可在NOR Flash上运行的解释
经常听到程序代码可在NOR Flash上运行,而不能在NAND Flash上运行的说法,关于这个说法容易给人造成误解,因为CPU执行代码分为取指、译码、执行三个步骤,所以真正运行代码的还是CPU,对于NOR Flash可以直接运行代码的说法,指的是CPU可以直接通过地址总线从NOR Flash上完成取指的操作。更深入的理解这个概念,我们先了解以下知识点。1.FLASH存储器FLASH ...原创 2018-09-15 16:31:36 · 7847 阅读 · 2 评论 -
STM32学习笔记之简易Bootloader串口升级设计
概念简介在学习制作串口升级 Bootloader 之前,我们先了解一下STM32的 IAP (In Application Programming)即在应用编程,IAP是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级. 设计这样的功能需要有两个项目代码: Bootloader...原创 2018-03-15 20:14:44 · 21257 阅读 · 0 评论 -
STM32学习笔记之__attribute__ ((at())绝对定位分析
在学习STM32 IAP 时,遇到了关于数组存储空间绝对定位的问题,例如:u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000))); 首先我们先搞懂这里的两个关键字. __attribute__ 是用来指定变量或结构位域的特殊属性,该关键字后的双括弧中的内容是属性说明. at 关键字可以用来设置变量...原创 2018-03-15 09:54:57 · 6552 阅读 · 0 评论 -
STM32学习笔记之Bootloader升级Ymodem协议简介
YModem协议 YModem协议是由XModem协议演变而来的,每包数据可以达到1024字节,是一个非常高效的文件传输协议 。下面先看下YModem协议传输的完整的握手过程: SENDER:发送方; RECEIVER:接收方; 第一步先由接收方,发送一个字符’C’; 发送方收到’C’后,发送第一帧数据包,内容如下:SOH 00 FF Foo.c NULL[123] ...原创 2018-03-16 15:46:05 · 4029 阅读 · 2 评论 -
STM32学习笔记之DMA传输
一、DMA简介1、DMA简介 DMA(Direct Memory Access:直接内存存取)是一种可以大大减轻CPU工作量的数据转移方式。 CPU有转移数据、计算、控制程序转移等很多功能,但其实转移数据(尤其是转移大量数据)是可以不需要CPU参与。比如希望外设A的数据拷贝到外设B,只要给两种外设提供一条数据通路,再加上一些控制转移的部件就可以完成数据的拷贝。 DMA...转载 2018-03-19 18:41:33 · 3954 阅读 · 2 评论 -
如何从ST官网获得标准库文件?
当需要开发一款新的单片机时,从ST官网获得库开发文件,能够给我们提供大部分外设的例程,以便于项目的快速开发。下面将介绍如何从官网获得库开发文件。 进入ST官网,在下载之前我们应该注册自己的ST账号,因为需要登录账号才能完成下载。下面我已经完成了登录。step1在官网首页,选择【Products】->【Microcontrollers】 step2...原创 2018-05-22 10:26:30 · 5187 阅读 · 3 评论 -
STM32在外部32Mhz晶振下的时钟配置方法
1. 硬件平台 本例程使用的是STM32F302RDT6芯片,其时钟配置方法在其它ST单片机中也类似。2. 实验目的 使用外部32Mhz晶振配置系统时钟为72Mhz3. 配置原理4. 修改配置5....原创 2018-07-06 20:12:57 · 9794 阅读 · 0 评论 -
STM32CubeMX工程闪退问题
现象:安装了STM32CubeMX软件后,在创建工程的过程中,只要一拖动卷轴,工程就会关闭。原因:因为打开了翻译软件,导致与STM32CubeMX发生了冲突。解决方法:将翻译软件先关闭退出。...原创 2018-07-30 16:48:15 · 3238 阅读 · 2 评论 -
面向对象之按键处理模块:MultiButton
MultiButton简介MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。使用方法1.先申请一个按键结构struct Button button1;2.初始化按键对象,绑定按键的GPIO电平读取接口read_button_pin() ...原创 2018-08-14 21:48:21 · 4230 阅读 · 1 评论 -
RT1052-初次相识
1.RT1052性能介绍i.MX RT1050 是业界首款跨界处理器,兼具应用处理器的高性能与高度集成,以及微控制器的易用性和实时功能。i.MX RT1050基于Arm® Cortex®-M7内核,运行频率为600 MHz。高性能Arm Cortex-M7 芯片采用六级流水线,集成双精度浮点计算单元DPFPU和DSP指令 3020 CoreMark/1284 DMIPS @ 600 ...原创 2018-08-29 14:30:22 · 21152 阅读 · 1 评论 -
STM32从入门到精通
前言:还记得大学老师跟我说过的一句话,嵌入式这个行业越学越觉得自己懂得太少。这也许就是我们要树立终生学习的目标和动力吧!我所理解的精通就是对崇尚的技术永无止境地追求。原创 2017-09-30 13:55:07 · 57692 阅读 · 13 评论