
——STM32
文章平均质量分 86
EmbededCoder
C, Python, C++, Qt, MCU, RTOS, ARM Cortex-M, Linux
展开
-
STM32的CAN
stm32 can转载 2022-11-08 13:33:04 · 2714 阅读 · 0 评论 -
windows下用J-link J-Flash下载STM32程序
打开“Option”—》“Project settings…”,进行烧写前的必要设置,如下图:在“General”页,选择“USB”,如下图:在“Target Interface”页,选择“JTAG”,JTAG速度设置为“Auto selection”,如下图在“CPU”页,选择开发板的CPU型号:ST STM32F103VB,如下图:“FLASH”页不用设置,默认设置就可以了。在“Production”页,我们把“Start applicati...转载 2020-11-22 16:02:13 · 2595 阅读 · 0 评论 -
亲测实验,stm32待机模式和停机模式唤醒程序的区别,以及唤醒后程序入口
这两天研究了STM32的低功耗知识,低功耗里主要研究的是STM32的待机模式和停机模式。让单片机进入的待机模式和停机模式比较容易,实验中通过设置中断口PA1来响应待机和停机模式。void EXTI1_IRQHandler(void){if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)){delay_ms(10);while(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1));if(GPIO_ReadInputDataBi转载 2020-10-16 18:50:48 · 3241 阅读 · 0 评论 -
STM32CubeMX-多通道ADC-DMA-circular 传输
在此系列上文基础上添加ADC功能一,CubeMX生成工程1,配置ADC引脚2,时钟配置3,ADC配置4,打开中断5,DMA配置(这里选择 halfword 应该也可以,程序里面对应存储adc数据的变量也为halfword u16即可)6,中断配置红色标注为注意点,不清楚原理,ADC中断和DMZ的关系有待探明。7,生成代码二,添加代码数字标注处为添加部分/** *******************************.转载 2020-08-10 10:18:37 · 4111 阅读 · 0 评论 -
STM32 上电后的启动过程
微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口地址在微控制器的内部存储空间中不再是绝对不变的。相信读者都可以回答这个问题,答案也许大同小异,但肯定都有个关键词,叫“启动文件”,用英文单词来描述是“Bootloader”。无论性能高下,结构简繁,价格贵贱,每一种微控制器(处理器)都必须有启动文件,启动文件的作用便是负责执行微控制器从“复位转载 2020-07-21 10:26:49 · 3211 阅读 · 2 评论 -
stm32数据类型长度
由于经常会忘记stm32的数据类型长度,测试一下: DEBUG_INFO("stm32数据类型长度"); DEBUG_INFO("char = %d byte.", sizeof(char)); DEBUG_INFO("short = %d byte.", sizeof(short)); DEBUG_INFO("int = %d byte.", sizeof(int)); DEBUG_INFO("long = %d byte.", sizeof(long));...转载 2020-07-03 10:05:50 · 2205 阅读 · 0 评论 -
从芯片架构到stm32
目录一.stm32的发展历程 1二.ARM处理器框图 3三.Stm32 存储器映射(详细地址可查看stm32 datasheet) 4四.stm32编译流程 6五.stm32上电启动流程 7一.stm32的发展历程1.芯片领域三大架构貌似和我的stm32有啥关系?别急!2.ARM架构发展历程注:1>ARM公司在经典的ARM11以后的产品改用cortex命名,并分为A,R和M三类(针对不同市场需求),cortex系列属于ARMv7架构,ARMv..转载 2020-06-15 16:54:08 · 1052 阅读 · 0 评论 -
stm32l051低功耗之stop模式
STM32L051算是一款使用的人不多的低功耗芯片,资料也没有像F系列那么多,但是它在低功耗方面性能优异。ST官方关于STM32L051停机模式低功耗给的指标如下,在stop without rtc模式下电流消耗能达到0.4ua,在stop with rtc模式下电流消耗能达到0.8ua。在进入停机模式之前,按照ST官方例程,首先对引脚进行配置,设置成模拟输入状态。void stop_mode_config(void){ GPIO_InitTypeDef GPIO_InitStru...转载 2020-06-03 15:54:28 · 3045 阅读 · 0 评论 -
STM32低功耗模式
STM32 的低功耗模式有 3种: 1)睡眠模式(CM3内核停止,外设仍然运行) 2)停止模式(所有时钟都停止) 3)待机(standby)模式(1.8V内核电源关闭) 从待机模式唤醒后的代码执行等同于复位后的执行 进入Standby模式后,只能有Wake-up脚和RTC唤醒,特别是唤醒后,程序将从最开始运行,也就是相当于软件复位。不同系列的会略有不同,一般新出的芯片功能会增加一些。STM32...转载 2020-04-17 15:04:24 · 7980 阅读 · 0 评论 -
STM32 TIM1输入捕获配置
最近做一个IRIG-B码对时的项目用到STM32的TIM1输入捕获功能,配置TIM1的输入捕获遇到很多坑,在这里总结下,希望对大家有帮助。项目中用到的输入引脚为PE13,为TIM1_H3即TIM1的第3通道,这里提醒大家在使用引脚功能时最好查看引脚的重映象表,看是否要开启重映象,功能为捕获高电平脉宽,具体配置如下:1.首先配置GPIO/* GPIO引脚配置 */voi...转载 2020-04-05 22:37:56 · 1455 阅读 · 0 评论 -
STM32驱动FLASH(W25Q128)
1、W25Q128 是华邦公司推出的一款 SPI 接口的 NOR Flash 芯片,其存储空间为 128Mbit,相当于 16M 字节。W25Q128 可以支持 SPI 的模式 0 和模式 3,也就是 CPOL=0/CPHA=0 和CPOL=1/CPHA=1 这两种模式。2、写入数据时,需要注意以下两个重要问题:①、Flash 写入数据时和 EEPROM 类似,不能跨页写入,一次最多写入...转载 2019-12-04 16:17:28 · 13180 阅读 · 3 评论 -
stm32f103驱动SHT20( I2C )
说明: 应用STM32驱动SHT20I2C 部分驱动参考:http://www.openedv.com/forum.php?mod=viewthread&tid=100058测试结果:sht2x.c/*This source code and any compilation or derivative thereof is the proprietaryinfor...转载 2019-12-02 17:38:47 · 4643 阅读 · 8 评论 -
FSMC(STM32)
FSMC信号引脚复用总线时管脚:PD14,//FSMC_DA0PD15,//FSMC_DA1PD0 ,//FSMC_DA2PD1 ,//FSMC_DA3PE7 ,//FSMC_DA4PE8 ,//FSMC_DA5PE9 ,//FSMC_DA6PE10,//FSMC_DA7PE11,//FSMC_DA8PE12,//FSMC_DA9PE13,//FSM...转载 2019-10-25 16:49:15 · 1539 阅读 · 0 评论 -
STM32CbueIDE下载和汉化
STM32CubeIDE是一个多功能的多操作系统开发工具,是STM32Cube软件生态系统的一部分。STM32CubeIDE是一个先进的C / C ++开发平台,具有STM32微控制器的IP配置,代码生成,代码编译和调试功能。它基于ECLIPSE™/ CDT框架和用于开发的GCC工具链,以及用于调试的GDB。它允许集成数百个现有插件,完成ECLIPSE™IDE的功能。STM32CubeIDE...转载 2019-10-25 14:05:47 · 853 阅读 · 0 评论 -
stm32产生随机数
srand和rand()配合使用产生伪随机数序列。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。1、使用RTC时钟的时间作为随机数种子。2、单片机内部运行一个循环软时钟,当随机事件(比如一些信号的输入、按键事件、上位机发来的信息等等)发生时,把此时的...原创 2019-10-25 13:56:22 · 5694 阅读 · 0 评论 -
第43章 RTC—实时时钟—零死角玩转STM32-F429系列
第43章 RTC—实时时钟全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn野火视频教程优酷观看网址:http://i.youku.com/firege43.1 RTC简介RTC—real time clock,实时时钟,主要包含日历、闹钟和自动唤醒这三部分的功能,其中的日历功能我们使用的最多。日历包含两个32bit的时间寄存器,可直接...转载 2019-10-25 13:25:39 · 1307 阅读 · 0 评论 -
STM32 触摸屏触摸功能
要用到触摸屏首先就要对触摸屏的原理有一定的了解,我想这个是前提,也不用太多说的。就是当触笔触到屏上时,对应的位置就会产生相应大小的电压,输入到芯片,AD转换后得到一个数据。而触摸校准就是将接受到的原始模数转换值转换成屏幕像素坐标。再就是了解触摸芯片,知道他的工作方式,以及跟STM32的连线。触摸实验中,我的实验板是用SPI口来实现数据的传输的,即SPI与xpt2046相连。触摸屏...转载 2019-10-16 22:38:52 · 9191 阅读 · 1 评论 -
stm32 串口格式化打印字符串 函数封装
#include <iostream>#include <windows.h>//**********************************************#include <stdarg.h>#include <stdio.h>int uart_printf(void* UartHandle,char* buf,s...原创 2019-07-11 11:05:34 · 3170 阅读 · 0 评论 -
STM32 定时器周期动态修改
最近手头项目上有个需要模拟串口的地方,而模拟串口部分有这样的一个需求:当Strat信号来的时候启动定时器TIM3,到52us后采样Start信号是否是低电平,然后希望将定时器的周期改成104us,采样剩余的9个bit。解决思路:① 外部中断触发时候启动TIM3(同时关闭外部中断使能),等52us后在TIM3中断里判断Rx的状态;② 如果是低电平就改变定时器TIM3的周期为104us;...转载 2019-09-12 09:39:02 · 6388 阅读 · 0 评论 -
STM32L系列低功耗调试《实用篇》
不知道大家有没有和我一样的经历,看官方数据手册,什么休眠2uA, 停机多少nA,这么换成自己调试的时候就是上百uA了,差的不是一个数量级,有木有这样的感受~最近在做一个NB项目,用到了如下外设: 外部唤醒引脚,串口,SPI,DMA,ADC,RTC,模拟IIC等外设,可以说是一个综合型项目了吧,最后调试下来整机<10uA 待机功耗(实测...转载 2019-09-12 09:35:35 · 9125 阅读 · 0 评论 -
STM32L1XX系列的Flash EEPROM
stm32不同芯片种类对flash的分配情况都是有些许差别的,所以建议阅读芯片手册,这里将简述L1系列的flash。1 NVM overview1.1主存储块(Main/Program memory)主要保存程序和一些const变量,地址从0x0800 0000开始,每4K为一个扇区,每个扇区由16页组成,每页包含256bytes。程序文件是从 0x0800 0000 地...原创 2019-09-12 09:53:38 · 2187 阅读 · 0 评论 -
STM32HAL内部EEPROM读写L151
简单生成代码后找到MDK的驱动文件官方建议步骤 #####数据EEPROM编程功能#####===============================================================================[..]擦除或编程的任何操作都应遵循以下步骤:(#)调用@ref HAL_FLASHEx_DATA...转载 2019-09-12 09:59:16 · 2801 阅读 · 0 评论 -
STM32硬件错误HardFault_Handler的处理方法
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。STM32出现硬件错误可能有以下原因:(1)数组越界操作;(2)内存溢出,访问越界;(3)堆栈溢出,程序跑飞;(4)中断...转载 2019-09-17 14:00:24 · 1353 阅读 · 0 评论 -
Keil(MDK-ARM-STM32)系列教程(八)在线调试(Ⅰ)
Ⅰ、写在前面Keil在线调试的内容有很多,本文带来在线调试常用的内容:Debug Toolbar调试工具栏(复位、全速运行、停止运行、单步调试、逐行调试、跳出调试、运行到光标行、跳转到暂停行、调试窗口)快捷按钮的详细内容。Keil工具栏总共有三种:文件工具栏(File Toolbar)、编译工具栏(Build Toolbar)、调试工具栏(Debug Toolbar)。编译工具栏...转载 2019-09-18 17:08:27 · 733 阅读 · 0 评论 -
程序运行时,发现程序卡死在B.处
背景:程序运行时,发现程序卡死在B.处。解决方法:程序卡死在B.处说明有中断没有处理,导致程序进入中断后无法跳出。之后查看程序发现,程序中定义了一个中断,但是之前一次偶然把中断处理程序屏蔽了,导致没有中断处理函数。程序如下://开启了EXTI15_10_IRQn中断void nirq_Init(void){GPIO_InitTypeDef GPIO_InitStru...原创 2019-09-19 10:00:07 · 2211 阅读 · 0 评论 -
FSMC知识详解,以及驱动TFTLCD原理
FSMC提供了所有的LCD控制器的信号:FSMC_D[16:0] 16bit的数据总线FSMC NEx:分配给NOR的256M,再分为4个区,每个区用来分配一个外设,这四个外设的片选分为是NE1-NE4,对应的引脚为:PD7—NE1,PG9—NE2,PG10-NE3,PG12—NE4。连LCD的片选。FSMC NOE:输出使能,连接LCD的RD脚。FSMC NWE:写使能,连接LCD的RW...原创 2019-10-11 16:02:40 · 8554 阅读 · 0 评论 -
关于TFTLCD硬件接口和驱动的问题
关于TFTLCD硬件接口和驱动的问题 在设计TFTLCD液晶硬件驱动电路的时候,我们会发现TFTLCD裸屏(买来的最初元件)的接口并非相似,所以导致驱动电路设计需要有些差别。TFTLCD液晶的本质 ...转载 2019-09-10 10:30:47 · 2833 阅读 · 0 评论 -
LCD MCU模式和RGB模式
应用比较多的就是MUC模式和RGB模式,区别有以下几点:1.MCU接口:会解码命令,由timing generator产生时序信号,驱动COM和SEG驱器。RGB接口:在写LCD register setting时,和MCU接口没有区别。区别只在于图像的写入方式。2.用MCU模式时由于数据可以先存到IC内部GRAM后再往屏上写,所以这种模式LCD可以直接接在MEMORY的总线上。用...原创 2019-09-10 10:25:56 · 3687 阅读 · 2 评论 -
STM32芯片型号的命名规则
STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:(1)STM32:STM32代表ARM Cortex-M3内核的32位微控制器。(2)F:F代表芯片子系列。(3)103:103代表增强型系列。...原创 2019-09-10 09:24:28 · 4101 阅读 · 1 评论 -
STM32F4之FPU性能的充分发挥-设置要点
浮点运算一直是定点CPU的难题,比如一个简单的1.1+1.1,定点CPU必须要按照IEEE-754标准的算法来完成运算,对于8位单片机来说已经完全是噩梦,对32为单片机来说也不会有多大改善。虽然将浮点数进行Q化处理能充分发挥32位单片机的运算性能,但是精度受到限制而不会太高。对于有FPU(浮点运算单元)的单片机或者CPU来说,浮点加法只是几条指令的事情。现在又FPU或者硬件浮...转载 2019-07-12 10:06:43 · 6344 阅读 · 1 评论 -
STM32大小端模式与堆栈及其增长方向
栈增长和大端/小端问题是和CPU相关的两个问题.1,首先来看:栈(STACK)的问题.函数的局部变量,都是存放在"栈"里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以战舰stm32开发板为例,在startup_stm32f10x_hd.s里面,开头就有:Stack_Size EQU 0x00000800表示栈大小是0X800,也就...转载 2019-07-12 09:57:54 · 408 阅读 · 0 评论 -
STM32学习笔记之__attribute__ ((at())绝对定位分析
学习STM32也会遇到这样的绝对定位的问题如下:uint8_t UART_RX_BUF[1024] __attribute__ ((at(0X20001000))); //就是将串口接收的数据定位到RAM中起始地址为0X20001000;绝对定位要么定位到flash、要么定位到RAM,这里我们将定位在flash进行说明。MDK如何实现将数据存储到FLASH指定地...转载 2019-07-12 09:42:15 · 2351 阅读 · 0 评论 -
STM32定义堆栈地址到ram区顶部
本设置针对stm32f103rbt6的设置,该芯片RAM大小为20kB,故RAM区地址范围为0x20000000—0x20005000,芯片信息如下图所示;第一步:设置.sct文件;;*************************************************************; *** Scatter-Loading Description Fil...转载 2019-07-12 09:35:43 · 6911 阅读 · 0 评论 -
关于STM32的IAP与APP互相跳转
关于STM32的IAP与APP互相跳转之前做了一个不带系统的IAP与APP互相跳转,在网上找了资料后,很顺畅就完成了,后来在IAR集成开发环境下,IAP无系统,APP用UCOS系统做互相跳转出现了很多问题。现将IAP学习过程和实际遇到问题总结一下。首先说一下什么是IAP。IAP(In Application Programming)即在应用编程,IAP是用户自己的程序在运行过程中对User...转载 2019-07-12 08:55:56 · 1555 阅读 · 0 评论 -
TrueSTUDIO 设置程序下载地址
1、2、3、跳转失败,则跳转时不要做过多的操作。原创 2019-07-11 21:20:28 · 1311 阅读 · 0 评论 -
禁止KEIL初始化RAM为零& 如何判断是软复位还是上电复位
如何禁止KEIL初始化RAM为零1. 在KEIL NoInit 打钩,类似下面 2.<1> 另须对需要热启动保持的变量用__at关键字指定某个区域 <2>或者__attribute__((zero_init)) 关键字 .bss段 MDK3.03A开始就支持关键字 __at(...转载 2019-07-08 11:27:17 · 1928 阅读 · 0 评论 -
stm32 HAL 库 串口开关 串口接收开关
适用于HAL库1、串口接收打开或关闭#define UART_ENABLE_RE(USARTx) USARTx.Instance->CR1|= (uint32_t)0x0004 #define UART_DISABLE_RE(USARTx) USARTx.Instance->CR1&= (~(uint32_t)0x000...原创 2019-06-23 14:48:48 · 6416 阅读 · 2 评论 -
STM32之DMA
一、DMA简介1、DMA简介 DMA(Direct Memory Access:直接内存存取)是一种可以大大减轻CPU工作量的数据转移方式。 CPU有转移数据、计算、控制程序转移等很多功能,但其实转移数据(尤其是转移大量数据)是可以不需要CPU参与。比如希望外设A的数据拷贝到外设B,只要给两种外设提供一条数据通路,再加上一些控制转移的部件就可以完成数据的拷贝。 DMA就是基于...转载 2019-06-21 19:43:57 · 466 阅读 · 0 评论 -
stm32-DCMI—OV2640摄像头
第45章 DCMI—OV2640摄像头全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn野火视频教程优酷观看网址:http://i.youku.com/firege本章参考资料:《STM32F4xx参考手册》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于开发板配套...转载 2019-06-19 16:41:10 · 27808 阅读 · 5 评论 -
在linux环境下如何进行stm32的开发建议
工具链一般用gcc-arm-none-eabi,可以用包管理装,也可以到arm官网下,也可以自己编译,毕竟gnu源有这个配置。纯用命令行的话,cubemx可以生成makefile工程,改下编译器路径就能make,会生成bin文件。用IDE的话,可以用eclipse,参考wiced sdk。可以用vscode,体验要优于sublime。网上搜搜怎么配环境,主要就是设置工具链的目录。烧...转载 2019-04-26 13:53:24 · 773 阅读 · 0 评论