![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 53
宗师之路
新手请多多关照
展开
-
__I、 __O 、__IO是什么意思?怎么用?
原文: http://www.chuxue123.com/forum.php?mod=viewthread&tid=122&extra=page%3D1__I、 __O 、__IO是什么意思? 这是ST库里面的宏定义,定义如下:#define __I volatile const /*!< defines 'read only' permissions转载 2016-04-28 11:32:55 · 26556 阅读 · 3 评论 -
CRC冗余校验详解
一CRC简介 CRC校验码的基本思想是利用线性编码理论, 在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。 在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)原创 2016-10-02 15:41:29 · 18663 阅读 · 0 评论 -
USART串口发送0X00问题解决
今天在用USART发送数据时,我要发的数据如下,是一个数组 相应的发送程序如下这个时候发现一个问题0x00之后的数据都无法发送出去这是因为程序里面while检测到0X00时候就结束了,就是这一行while(*s)后改写如下void UART2_SendString(uint8_t* s,unsigned char le原创 2016-10-07 20:32:42 · 14075 阅读 · 1 评论 -
STM32F407多通道ADC采样程序
注意STM32F407在进行AD采样时,如果引脚是浮空的,这个时候采集到的电压并不是01 ADC引脚的初始化void Lsens_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //使能GPIOF时钟 /原创 2016-11-07 17:04:55 · 23567 阅读 · 6 评论 -
STM32的SRAM和FLASH--概述
1 STM32片内自带SRAM和FLASH,FLASH是用来存储程序的,SRAM是用来存储程序运行中的中间变量,通常不同型号的STM32的SRAM和FLASH大小是不相同的,以我手边的STM32F103VET6来看,根据数据手册可以看到 FLASH存储器又成为闪存,它与EEPROM都是掉电后数据不丢失的存储器,但是FLASH得存储容量都普遍的大于EEPROM,,在存储控制上,最主要的原创 2016-11-20 11:09:57 · 17408 阅读 · 0 评论 -
stm32软件模拟I2C
1 很多人都知道stm32的硬件I2C存在BUG,现在我们通过软件模拟时序的办法来实现I2C。原创 2016-11-24 16:47:45 · 13810 阅读 · 0 评论 -
I2C器件的从设备地址的设置(以AT24C02为例)
1 AT24C02的硬件连接电路图2 从设备地址 在进行I2C通信时,主机发送启动信号后,再发送寻址信号。器件的地址有7位和10位,以7为地址寻址为例,寻址信号由一个字节构成,高7位为地址位,最低位为方向位,用来表示主机与从器件的数据传输方向,方向位0代表主机接下来对从器件进行写操作,方向位为1,表明主机接下来对器件进行读操作。 AT24C02的高4位是固定的,为原创 2016-11-24 20:59:47 · 26594 阅读 · 2 评论 -
单片机编程经验总结
1 低电平触发可能碰到这种状况,即终端执行后低电平依然存在,这个时候就需要在单片机的中断程序中检测低电平是否撤销,如果没有撤销,则在中断程序中进行等待,一般而言可以将低电平触发改为下降沿触发。2 千万不要在中断程序里面写延时,这是大忌!!!3 中断定时的定时时间不要太短,如果太短会造成单片机不断地进中断而无法正常工作,通常定时时间可以选择1-2ms4 在AD原创 2016-10-04 15:45:13 · 1116 阅读 · 0 评论 -
STM32F1的I/O最大能承受多大电压
1 大部分端口是能够承受+5V电压的,但是也有一些是不能的。2 具体哪些能够承受+5V电压,要参考相应的数据手册,以STM32F103xC 系列的来看,参考数据手册 这里的FT就表示能承受+5V电压 PS:在今天的实际使用中,我的STM32芯片承受的电压到了4V多,但是芯片依然能正常工作。原创 2016-12-30 23:38:38 · 11409 阅读 · 0 评论 -
stm32与sim900之GPRS通信(电脑串口与SIM900通信)
注意:1 sim900在进行GPRS通信的时候最大电流可以到90MA.瞬间电流SIM900模块可能高达2A@4V,即输入端电流瞬间值可能高达740mA@12V,故给模块选择电源的时候,要能满足瞬间电流峰值。以上这段话摘录自正点原子的SIM900用户手册,也就是说你在用SIM900这个模块进行GPRS数据传输时,要保证能给这个模块提供2A左右的电流,在实际的测试当中,如果提供的电流过原创 2016-11-12 10:18:51 · 15575 阅读 · 5 评论 -
STM32启动文件分析
;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************;* File Name : startup_stm32f10x_hd.s;* Author : MCD Application Team;* Version : V3.原创 2017-01-13 15:23:28 · 1272 阅读 · 0 评论 -
STM32F103-基本定时器
参考书籍《零死角玩转 STM32F103—指南者 》 一,STM32的定时器分类 STM32有8个定时器,分为三种:基本定时器,通用定时器和高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。通用定时器 TIM2/3/4/5 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO...原创 2018-04-22 22:14:23 · 7442 阅读 · 0 评论 -
STM32的Systick时钟
参考资料:《零死角玩转STM32F103-霸道》1 Systick时钟简介 SysTick—系统定时器是属于CM3内核中的一个外设,内嵌在NVIC中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。 SysTick是属于CM...原创 2018-05-07 14:37:15 · 2445 阅读 · 0 评论 -
Undefined symbol f_unlink
今天在使用Fatfs文件系统的时候,调用f_unlink函数,编译总是报错,通过查找,发现f_unlink在ff.h中已经声明,并且也实现过了,但是无法调用。 参考这篇文章 http://www.aiuxian.com/article/p-1961858.html 将_FS_MINIMIZ的值改为0即可原创 2018-04-29 16:58:03 · 887 阅读 · 0 评论 -
Flash与SRAM的区别?
转载自 百度知道 https://zhidao.baidu.com/question/217331887.html?skiptype=2flash写入的内容不会因电源关闭而失去,读取速度慢,成本较低,一般用作程序存储器或者低速数据读取的情况。sram有最快的读写速度,但电源掉落后其内容也会失去,价格昂贵,一般用作cpu的二级缓存,内存条也不用这个,适合高速数据读取的场合。转载 2016-10-27 11:51:47 · 10167 阅读 · 0 评论 -
stm32 堆和栈(stm32 Heap & Stack)
原文地址:http://blog.csdn.net/slj_win/article/details/16906141关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的。那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘:刚接手STM32时,你只编写一个int main(){ while(1);}BUILD://Program转载 2016-10-27 11:46:27 · 9910 阅读 · 1 评论 -
STM32F1的UART4串口配置
注意是UART4,不是USART4 在stm32中UART和USART是不相同的 USART是通用同步/异步串行接收/发送器 UART是通用异步收发传输器 简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。 USART支持同步模式,因此USART 需要同步时钟信号USART_CK(如STM3原创 2016-10-24 15:39:34 · 41604 阅读 · 8 评论 -
STM32的ADC采样与多通道ADC采样
一 单通道采样 参考资料:《STM32库开发实战指南》 刘火良,杨森著原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比较简单也容易理解,但是存在一定的弊端,下面给出《STM32库开发实战指南》上面配套的硬件电路图 如果设计电路图的话,可以参考这种思路。我的收获 1原创 2016-05-12 07:45:36 · 59915 阅读 · 6 评论 -
STM32F1和STM32F4 区别
原文地址http://www.51testing.com/html/54/238554-858686.htmlSTM32F4相对于STM32F1的改进不只一点点,为了便于初学者了解,我们比对相关资料将改进点进行了汇总。STM32F1和STM32F4 区别 (安富莱整理) F1采用Crotex M3内核,F4采用Crotex M4内核。 F1最高主频 72M转载 2016-05-12 09:01:45 · 14219 阅读 · 3 评论 -
stm32之DMA彻底研究
原文:http://blog.chinaunix.net/uid-20758197-id-3045338.html在做实验之前,首先必须明白什么是DMA,DMA的作用又体现在哪里。 DMA,即直接内存存储,在一些数据的传输中,采用DMA方式,从而将CPU解放出来。让CPU有足够的时间处理其他的事情。 stm32使用DMA的相关操作: 1、DMA的配置 要配置的有DMA传输通道选择,传输的成员转载 2016-05-04 09:35:11 · 10951 阅读 · 3 评论 -
一起来搞定 ds1302
原文: http://bbs.elecfans.com/jishu_295866_1_1.html最近在论坛看到很多同仁在研究ds1302这款时钟芯片,正巧公司项目上也用到这个,因为学习过程中遇到些问题,略有所悟。突然萌生一个想法,召集老鸟们过来一起吃透这款芯片,然后记录下来,留给后来的同学,希望他们能够获益,避免走一些弯路...以后也不会有那么多帖子来问ds1302问题。。。。转载 2016-05-16 15:18:55 · 4164 阅读 · 0 评论 -
基于stm32的pwm呼吸灯
这一节的程序所涉及到的硬件是比较简单,主要是考察对stm32时钟的应用原理性质的东西我就不多说了,参考书目为: 《STM32库开发实战指南》 刘火良,杨森著 《STM32开发指南(库函数版本)》 正点原子著使用定时器来控制I/O口输出PWM波形,从而驱动LED灯出现类似呼吸频率一般的亮灭。硬件电路图: 我的收获: 1 这是STM32数据手册上对TIM3通用定时器复用功能重映象的原创 2016-05-07 11:52:29 · 12466 阅读 · 3 评论 -
基于stm32的超声波测距
首先来看模块图 在某宝上一搜就能找到,关于它的使用也是非常简单,先看数据手册里面需要注意的几点 1 基本的参数 在实际测试当中,最大测量三米多的距离还是可以,最小距离我没有做测试,我测的最小距离是50厘米,再往下没有继续测。 2 测距的基本原理 这里的基本原理其实应该是它的使用方法,如果你仔细看它的数据手册会发现这种测距模块还有...原创 2016-06-05 21:12:56 · 44409 阅读 · 67 评论 -
在stm32中使用while循环导致程序卡死
今天在使用stm32的过程中发现这样一个问题,程序莫名卡死。 先来看导致卡死的代码 while ( ReadRawRC ( CommandReg ) & 0x10 );这是我们在程序中经常用到的写法,容易理解,程序的作用的读出一份数据,然后判断他的第4位是否为0,如果为0,则跳出循环,否则程序卡死等待。也正因为这里的等待,导致读出的数据第4位不为0时程序卡死。我...原创 2016-07-16 10:56:40 · 10306 阅读 · 4 评论 -
emwin的进度条控件
1 进度条控件介绍 进度条通常在应用程序中用于实现虚拟化,下面的截图是设置了皮肤和没有设置皮肤时的显示效果: 没有皮肤 有皮肤 2 程序代码: (程序是参考安福莱《stm32-V5开发板STemwin教程》)#include "stm32f10x.h"#include "bsp_led.h"#include "GUI.h"#include "diskio.h"#include转载 2016-07-21 09:08:20 · 6266 阅读 · 0 评论 -
stm32低功耗实验之待机模式
一 待机模式简介 在stm32的低功耗模式中,待机模式可以实现系统的最低功耗,在这种模式下,只需要2uA左右的电流。三 待机唤醒程序分析实验现象: 将程序下载到开发板上后,LED灯会不断地亮灭,当按下KEY2键超过3s时,LED灯灭,标志着单片机进入待机模式,再按下KEY1键,这时唤醒单片机,LED又开始不断地亮灭亮灭。程序中用到的一原创 2016-09-16 10:49:56 · 14598 阅读 · 0 评论 -
基于stm32F1的过采样技术研究与实现
1问题的提出 2016年TI杯电子设计竞赛G题简易电子秤中有一项要求如下: 可以计算出该题目要求的精度是 (500-5)/0.01=49500但是stm32F1自带ADC只有12位精度,也就是说最多能采集2的12次方个数据(2^12=4096),显然不满足题目的要求,通过过采样技术,可以达到需求的精度。2 过采样数据的抽取 注:这里的p是需要得到额外p位精度假设p=1,那么需要采集原创 2016-09-05 18:06:48 · 8518 阅读 · 0 评论 -
关于MDK调试时watch窗口出现cannot evaluate的解决办法
解决办法: 必须是当前断点处所在的函数里面有这个参数才行,或者是全局变量.原创 2016-09-07 19:00:22 · 31861 阅读 · 2 评论 -
STM32中断优先级彻底讲解
原文网址: http://blog.sina.com.cn/s/blog_4fed55ce0100j7nd.html一:综述 STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级 的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。 二:优先级判断 STM32(Cortex-M3)中有两转载 2016-09-07 20:23:03 · 4367 阅读 · 0 评论 -
STM32串口的部分映射与完全映射
以stm32的USART1来举例默认使用的是PA9和PA10,当需要开启复用功能时,需要注意修改一下几个地方的代码 1 时钟的开启 当使用复用功能后,就需要开启复用时钟RCC_APB2Periph_AFIO2 初始化引脚的不同,原来的是PA9,PA10,但是现在要初始化PB6,PB7,这一部分就不贴代码了。 3 调用GPIO_Pin原创 2016-10-11 18:12:01 · 21917 阅读 · 2 评论 -
MDK的编程过程和变量存储位置
1 参考书籍《零死角玩转STM32-F429》2 编程过程 首先我们简单了解下 MDK 的编译过程,它与其它编译器的工作过程是类似的,该过程见图 51-1。 (1) 编译, MDK 软件使用的编译器是 armcc 和 armasm,它们根据每个 c/c++和汇编源文件编译成对应的以“.o”为后缀名的对象文件(Object Code,也称目标文件),其内容主要是从源文件编译得到的机器码,包含了代...原创 2018-05-14 15:02:43 · 3191 阅读 · 1 评论