STM32应用实例
文章平均质量分 79
脆弱的代码
本博客主要写是我的学习笔记和个人项目,内容包括我收集的资料和个人的理解。
展开
-
基于RT-Thread实现的小游戏(贪吃蛇、俄罗斯方块)
设计思路:运用RT-Thread系统需要结合自己的项目需求,将RT-Thread的优点发挥出来,不仅要实现需求,还要让代码具有可扩展性、移植性。我们利用一个定时器进行周期地检测摇杆的状态,我们要保证任务能够快速响应摇杆。作为游戏机而言,其中包含了很多种小游戏,如果一种游戏当作一个线程,那么某一个时刻只会运行一个游戏,也就是一个游戏线程;创建那么多个线程不就没有意义了吗?确实最好的方式是使用前后台的形式实现,但这里为了让代码能够层次分明,可扩展性,一个小游戏就是一个线程,系统只需...原创 2020-05-29 11:36:48 · 2216 阅读 · 2 评论 -
stm32系列启动文件解读(KEIL编译环境)
启动文件在嵌入式芯片开发是必不可少的,其文件后缀是.s,通常需要加入工程参与编译。它的的用包括一下几点:开辟栈、堆的空间。 初始化中断向量表。 调用外部SystemInit函数,初始化时钟。 调用C库函数__main初始化用户栈,调用main函数转到C世界。启动文件使用汇编语言编写,如果熟悉汇编语言,那么很容易理解它;如果不熟悉汇编语言,针对启动文件里用到的汇编指令,下面会一一介...原创 2020-04-23 14:24:21 · 1786 阅读 · 0 评论 -
IAR新建stm32工程,完美移植stm32标准库(附源码)
1.下载STM32官方标准库点击上面超链接,下载需要登陆账号,如果没有就注册一个,非常快就能注册完成。我用的是F1系列,如果你用的不是F1系列,那么打开链接后找到对应的标准库下载。下载完成是这样的:上面的Project里面就有IAR的例子工程,也有其他编译器的例子工程,以及外设的使用例子。一般我们只需要选择熟悉一种开发工具即可,不会用到所有的例子,同时如果我们没有买官方的开发板,它的摸...原创 2020-04-10 14:37:01 · 6354 阅读 · 4 评论 -
Qt 实现串口终端控制台,适配RT-Thread的FinSH控制台功能(提供qt源码)
开发环境:Window 1064bit开发工具:IAR Embedded Workbench硬件:stm32f103c8t6RT-Thread Nano版本包含了FinSH 组件,我们可以在reconfig.h配置使用它,使用之后我们可以在电脑上通过串口终端输入命令调试系统。这功能用于调试或查看系统信息,在实际开发中可以带来很多的方便,。效果如下图:1.基于IAR,进行R...原创 2020-04-07 11:51:15 · 2340 阅读 · 0 评论 -
基于stm32、spi协议的Fatfs文件系统移植(附完整代码下载)
开发环境:Window 7 32bit开发工具:Keil uVision4硬件:stm32f103vct6目录1.硬件设计:2.软件设计1.SPI收发数据2.向SD卡发送的命令格式:3.SD卡应答命令的响应4.SD卡初始化流程3.下载验证4.注意事项5.实验可改进的地方前言:已经有段时间没有写博客了,可能是事有点多(是我懒...额),最近又...原创 2019-12-31 23:32:14 · 3935 阅读 · 2 评论 -
stm32之PVD可编程电压监测器(掉电保存数据)
前言:stm32系列提供了可编程电压检测器PVD,它是实时检测VDD的电压,当检测到电压低于或者高于PVD设置的阈值时,会想内核产生一个PVD中断(EXTI线中断)以使内核在复位前进行紧急处理。该电压阈值可通过PWR_CSR设置。PVD可配置8个等级:代码设计:#include "stm32f10x.h"#include "stdio.h"static void EXTI_...原创 2019-08-19 10:24:12 · 5678 阅读 · 1 评论 -
stm32之备份寄存器(BKP)应用(侵入检测中断)
前言:很多的嵌入式设备使用过程中,当系统掉电时,往往需要把一些用户设置的参数保存起来,或者是将掉电前的一些状态信息保存,或者是统计系统重启次数。保存这些动态信息其实有很多种方法,第一种:在系统掉电前保存到片内flash,但是对flash的读写是按页操作,对于保存一些少量的数据来说并不合算。第二种:在系统掉电前保存在片外的EEPROM,可以根据需要选用合适的EEPROM存储的大小,但这样需要增加额外...原创 2019-08-20 10:45:25 · 6881 阅读 · 0 评论 -
stm32之实时时钟RTC(掉电计时保持、秒中断、闹钟中断、溢出中断)
前言:stm32系列产品普遍都有实时时钟RTC模块,它提供一个掉电保持计时功能,掉电后由后备供电区域供电。除了提供时间和日期之外,还可以设置闹钟提醒,且可以在待机模式下设置闹钟唤醒系统。在一些小容量、中容量产品中,只有一个32位的计数寄存器,如果该计数寄存器自增1周期设置为1s,那么软件可以根据该计数寄存器的值算出当前的日期和时、分、秒。在一些大容量的产品中,年、月、日、时、分、秒都是独立的寄存器...原创 2019-08-21 12:06:39 · 22729 阅读 · 3 评论 -
stm32之电源管理(实现低功耗)
目录1.硬件原理2.低功耗模式3.睡眠模式实验4.停止模式实验5.待机模式实验前言:STM32F10xxx系列产品都有电源管理模块,芯片功耗会影响到一个产品的续航能力;比如在一些终端传感器场合里,为了减轻后期的维护投入,要求长期工作时间较长,更需要合理的芯片功耗管理。芯片自带几种运行模式,包括正常模式、睡眠模式、停止模式、待机模式。越往后,芯片的功耗越低,但能执行功能就越少...原创 2019-08-17 13:22:46 · 5653 阅读 · 1 评论 -
基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)
简介:本实验基于stm32最小系统、0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏。项目源码地址:点击下载。硬件设计:普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯),stc32f103c8t6最小系统开发板,如下所示。器件齐全后,用杜邦线将摇杆和oled正确地连接到stm32开发板上,注意各个器件的电源需要接到同一电压,下图是接线说明:接...原创 2019-07-05 09:12:05 · 13957 阅读 · 33 评论 -
基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)
概述:本实验基于stm32最小系统、0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏。项目源码地址:点击下载。硬件要求:普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电位的电压,上下摇动控制另一个电位的电压,并可垂直按下实现一个普通的按键。0.96寸OLED 单色屏幕,通过spi协议与单片机通信。stm32f103c8t6最小系统开发板。上面所用...原创 2019-07-03 08:49:46 · 10001 阅读 · 26 评论 -
stm32之TIM-基本定时器应用实例(详细)
开发环境:Window 7 开发工具:Keil uVision4 硬件:STM32F103VCT6定时器最基本的功能就是定时处理事情。比如定时发送USART数据、定时采集AD数据、定时检测IO口电位、还可以通过IO口输出波形等。可以实现非常丰富的功能。STM32系列的定时器分为基本定时器、通用定时器、高级控制定时器。后者包括前者的全部功能。所以先掌握基本定时器可以更好理解后面功能繁多的定...原创 2019-03-13 11:18:57 · 21013 阅读 · 3 评论 -
用keil4 模拟仿真显示引脚波形输出分析的步骤
1.点击魔术棒配置为模拟调试,填写好芯片型号,不需要接外设。2. 1)开始调试,2)打开逻辑分析窗口,3)执行程序,4)输出配置3.逻辑分析配置,添加信号,填入监测的引脚,如图代表PA8引脚,填完后回车,如果提示没找到信号,那么检查一下第一步的芯片型号是否正确;然后将Display Type选到Bit。4.配置完之后,Close退出到逻辑分析窗口,点击上栏stop接着再点...原创 2019-03-25 13:56:29 · 8741 阅读 · 1 评论 -
stm32之TIM-高级定时器应用实例一(详细)
硬件:stm32f103c8t6 开发工具:Keil uVision4 下载调试工具:ARM仿真器 如果第一次接触定时器,可以先看基本定时器。本篇内容较多,如果想直接动手操作,可以跳到后面的实验代码。 stm32标准库对定时器外设建立了4个初始化结构体,定时器分为基本定时器、通用定时器、高级定时器,针对不用的定时器要使用不同初始化结构体。下面是4个初始化结构体...原创 2019-03-25 11:26:47 · 38410 阅读 · 8 评论 -
stm32之TIM-高级定时器应用实例二(测量频率和占空比)
接着上一篇(实验一)高级定时器应用。实验二:PWM输入捕捉实验实验要求:高级定时器TIM1接收TIM2产生的PWM,TIM1测量PWM的频率和占空比,并将数据从UART1上发送到上位机,同时上位机通过发送命令改变PWM的占空比和频率。硬件设计: 用杜邦线连接TIM2通道一(PA.0)引脚与TIM1通道一(PA.8)引脚。PA.9是USART1的输出引脚,PA.1...原创 2019-03-29 21:02:37 · 3199 阅读 · 0 评论 -
stm32之iap实现应用(基于串口,上位机,详细源码)
开发环境:Window 7开发工具:Keil uVision4硬件:stc32f103c8t6篇幅略长,前面文字很多,主要是希望能让小白们理解,后面就是实现步骤,包括实现的代码。在研发调试的时候我们一般用烧录器下载代码,对于stc32f103c8t6来说,还可以用串口下载,步骤如下:1.PC端下载一个上位机Flash Loader Demo2.芯片的串口引脚Tx、Rx(PA.9、PA....原创 2019-05-05 10:47:29 · 7274 阅读 · 16 评论 -
stm32之USB应用实例(自制简易鼠标设备,详细源码)
前言:stm32产品大多数携带了一个USB2.0全速外设,并提供了USB开发库;我们可以利用开发库开发一些USB设备,比如音频设备、大容量存储设备、打印机、人机接口设备等。PC端之所以能识别不同的插入设备是因为USB制定了一套标准协议,USB设备插入后,主机会询问设备的信息,查询到设备信息之后,主机自身查询与其匹配的驱动并加载驱动,那么计算机里的应用程序就能使用该设备。下面将利用st官网提供的us...原创 2019-05-09 11:38:29 · 10143 阅读 · 15 评论 -
stm32之USB应用实例(官方例程资料下载使用)
开发环境:Window 7开发工具:Keil uVision4硬件:stc32f103c8t6stm32系列芯片很多都拥有一个USB2.0全速的通讯接口,下面介绍怎么使用st官方的usb应用例程。首先从官网下载源码:https://my.st.com/content/my_st_com/en/products/embedded-software/mcu-mpu-embedded-soft...原创 2019-05-07 09:53:28 · 15078 阅读 · 3 评论 -
stm32之IIC应用实例(AT24C02芯片,硬件和软件方式驱动)
目录1.物理层:2.协议层:3.数据的传输:4.程序设计写完回头一看发现字数还不少,如果你觉得文字太枯燥,那么可以跳到后面程序设计,直接动手做实验。如果想仔细了解关于IIC协议的细节,那么希望你能慢慢把看完,看完后一定有所收获。概述:IIC BUS(Inter Integrated Circuit BUS,内部集成电路总线)是飞利浦公司推出的二线制串行扩展总线;在IIC总线...原创 2019-06-22 09:56:47 · 14732 阅读 · 15 评论 -
stm32之ADC应用实例(单通道、多通道、基于DMA)
硬件:STM32F103VCT6开发工具:Keil uVision4下载调试工具:ARM仿真器网上资料很多,这里做一个详细的整合。(也不是很详细,但很通俗)。 所用的芯片内嵌3个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,2个内部通道。3个:代表ADC1、ADC2、ADC3(下图是芯片固件库的截图) 12位:也叫ADC分辨率、采样精度。先...原创 2018-07-23 22:25:46 · 98213 阅读 · 95 评论