STM32

动手实践丨手把手教你用STM32做一个智能鱼缸

摘要:本文基于STM32单片机设计了一款基于物联网的智能鱼缸。 本文分享自华为云社区《基于STM32+华为云IOT设计的物联网鱼缸【玩转华为云】》,作者: DS小龙哥 。 1. 前言 为了缓解学习、生活、工作带来的压力,提升生活品质,许多人喜欢在家中、办公室等场所养鱼。为节省鱼友时间、劳力、增加养鱼 ... »

STM32与物联网02-网络数据收发

在上一节中,介绍了 ESP8266 的使用方法。不过上一节中都是通过串口调试工具手动发送信息的方式来操作 ESP8266 ,这肯定不能用于实际开发。因此,本节介绍如何编写合适的程序来和 ESP8266 交互,从而收发并解析网络数据。 TCP服务器 在 TCP 服务器下,可以使用移动设备主动连接 ES ... »

STM32与物联网01-ESP8266基本操作

ESP8266物联网简介 ESP8266简介 ESP8266 是上海乐鑫公司开发的一款具有 WiFi 功能的控制芯片,它带有完整的 TCP/IP 协议栈,因此可以用作物联网开发。 ESP8266 本身也是一个性能不错的 32 位微控制器,完全可以作为普通的 MCU 使用。然而,考虑到 ESP8266 ... »

STM32 内设驱动***实现方式(系列)-前言

/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.0 * @date       May-2015 ********************************************* »

嵌入式02 STM32 实验05 蜂鸣器

蜂鸣器:是一种一体化结构的电子讯响器。主要分为分压式蜂鸣器和电磁式蜂鸣器两种类型。 一、有源/无源蜂鸣器(不是指是否带电源,而是有没有自带震荡电路)     1、有源蜂鸣器:有源蜂鸣器自带震荡电路,一通电就会发声。     2、无源蜂鸣器:没有自带震荡电路,需要外部提供2~5Khz左右的方波驱动,太能发声。 二、硬件设计   因为STM32的单个IO口最大可以提供25mA电流,而蜂鸣器的驱动电流在 »

STM32——CAN协议帧的标准格式和扩展格式与优先级的关系

一、CAN数据帧的标准格式和扩展格式 我们知道CAN总线上的数据帧都可以配置一个ID号,其可以为11位(标准ID格式)或者29位(扩展ID格式),这也是数据帧的标准格式和扩展格式的区别所在。 这个ID在CAN优先级中起着重要的作用,它决定了数据帧发送的优先级。对于优先级高的信息,可以给他打包上一个高优先级的ID,使它能够及时的发送出去。     RTR:用于区分此帧是数据帧还是遥控帧,显性电平(逻 »

stm32 SPI介绍和配置

  SPI是一种高速的,全双工同步的通信总线,在芯片管脚上占用了四根线,节约了芯片的管脚,同时为PCB的布局节省了空间,提供了方便,因此越来越多的芯片集成了这种通信协议,STM32也就有了SPI接口。   有上图可知有四个通信口,两个位移寄存器是同步的,那MISO和MOSI就不难理解了。 SCLK时钟信号,由主设备产生。CS从设备片选信号,由主设备控制。 1、配置相关引脚的复用功能,使能SPI2时 »

STM32的J-Link调试使用RTT输出调试信息

关于STM32F1单片机使用RTT打印日志的速度比串口打印要快,而且基本上和串口的Printf函数类似,所以在使用的时候也是很方便的。他的优点: 1.不占用串口; 2.打印速度快对CPU的运行影响小; 使用步骤是: 1.在工程里面加入RTT的4 个文件   2.包含头文件#include "SEGGER_RTT.h" 3.在使用的地方调用函数:SEGGER_RTT_printf(unsigned »

修改STM32库函数中的晶振值

STM32F407的库文件中默认晶振值为25MHz,若外接晶振8MHz,则需修改以下几个地方: 1)修改HSE_VALUE的值 将#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ 修改为 #define HSE_VALUE ((uint32_t)8000000) /*!& »

【1】STM32 Debug in RAM 在RAM中调试STM32 !!!

1.确定自己芯片的RAM起始地址和大小,例如我用的神舟王STM32F1底板 CPU为STMF103ZET   包含 64K RAM:0x2000 0000----0x2000 FFFF。 2.重新划分RAM 我将64K RAM分成两部分 48K(0xC000)用来当做Flash,16K(0x4000)当做RAM   3.Debug设置   4.CpuRAM.ini文件内容 ------------ »

stm32上的Lava虚拟机开发进度汇报(3)

感觉遇到一个瓶颈了,这几天都没有什么进度。 前几天把函数和一些最基本的伪指令实现了一下,能跑一点仅使用了绘图函数的lav,但是函数调用的问题一直没解决。 后来发现是粗心漏写了个++,解决了函数调用的问题。 接下来解决一些稍微麻烦点的,push字符串、printf、sprintf函数等。 以为差不多了,结果跑一下没一个能完整运行起来的,***的是坦克,能显示完整一幅图,而我做的《橡皮屋》似乎文件读写有 »

[转]解决STM32开启定时器时立即进入一次中断程序问题

整理:MilerShao       在用到STM32定时器的更新中断时,发现有些情形下只要开启定时器就立即进入一次中断。准确说,只要使能更新中断允许位就立即响应一次更新中断【当然前提是相关NVIC也已经配置好】。换言之,只要使能了相关定时器更新中断,不管你定时间隔多长甚至不在乎你是否启动了相关定时器,它都会立即进入一次定时器更新中断服务程序。 以STM32F051芯片为例,做了几种不同顺序的组合 »

stm32中的数据类型定义

STM32F10X.H 1 #include "core_cm3.h" 2 #include "system_stm32f10x.h" 3 #include <stdint.h> 4 5 /** @addtogroup Exported_types 6 * @{ 7 */ 8 9 /*!< STM32F10x Standard Peripher »

[STM32]USART发送字符串首字符丢失原因及解决办法

转自:http://blog.163.com/rainsmell_/blog/static/2128271132013215113349515/ 2013-03-15 23:33:49|  分类: STM32 订阅     在参考官方USART范例写发送代码时,字符串首字符莫名奇妙丢失 /* e.g. write a character to the USART */   USART_Se »

STM32 printf 函数原型

在STM32工程中调用printf函数,需要加入如下代码: #ifdef __GNUC__        /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf     set to 'Yes') calls __io_putchar() */  #define PUTCHAR_PR »

STM32 BKP备份寄存器介绍

1.  BKP可以用来保存数据        BKP中包括了42个16位的寄存器,共可保存84字节的内容,它们由VBAT的供电来维挂。 2.  BKP内保存的数据可以被毁灭(如果有人希望恶意得到这些数据的话,令其丢失比保护数据更重要)。STM32提供了一种称之为TAMPER的机制来完成。中文译为“侵入检测”,这需要占用一个外部引脚(PC13)。 3.  如果不用侵入检测功能,那么这个外部引脚可以用 »

STM32的USART中断死循环,形成死机。

作者:观海  QQ:531622 直接说重点:我用的是 STM32F103 芯片 USART2_IRQHandler 总是中断,程序死循环。 1、出现问题: 原程序的中断处理程序是: void USART2_IRQHandler(void){  u8 key = 0;  USART_ClearFlag(USART2,USART_FLAG_TC ); //清除中断标志  if(USART_GetIT »

STM32例程之USB HID双向数据传输(源码下载)【转】

程序功能 将STM32的USB枚举为HID设备。 STM32使用3个端点,端点0用于枚举用,端点1和2用于数据的发送和接收。 端点长度为64,也就是单次最多可以传输64个字节数据。 STM32获取上位机下发的数据并将该数据通过USB原样返回,同时将数据打印输出。 上位机程序通过调用windows的API实现对HID设备的读写控制。 USB接口原理图:<ignore_js_op& »

stm32 cubemx 工程生成报错

原因1移动了目录导致 解决方法, 记事本打开工程目录下面的.mxproject文件 把下面两条改成工程当前存放位置的绝对路径 [PreviousGenFiles]HeaderPath=xxxSourcePath=xxx »