STM
文章平均质量分 58
Leo-Lian
还在路上
展开
-
位运算加减乘除
转自:http://blog.csdn.net/hackbuteer1/article/details/7390093 转自:http://www.cnblogs.com/dandingyy/archive/2012/10/29/2745570.html^: 按位异或;&:按位与; | :按位或计算机系统中,数值一律用补码来表示:因为补码可以使符号位和数值位统一处理,同时可以使减法按照加法来处理转载 2017-06-28 22:04:25 · 358 阅读 · 0 评论 -
STM32 FSMC机制flash拓展
STM32是ST(意法半导体)公司推出的基于ARM内核Cortex-M3的32位微控制器系列。Cortex-M3内核是为低功耗和价格敏感的应用而专门设计的,具有突出的能效比和处理速度。通过采用Thumb-2高密度指令集,Cortex-M3内核降低了系统存储要求,同时快速的中断处理能够满足控制领域的高实时性要求,使基于该内核设计的STM32系列微控制器能够以更优越的性价比,面向更广泛的应用领域。 S...转载 2018-03-14 14:10:20 · 4042 阅读 · 0 评论 -
STM32 DSP库 使用注意点
DSP库 使用注意点我们平常所使用的CPU为定点CPU,意思是进行整点数值运算的CPU。当遇到形如1.1+1.1的浮点数运算时,定点CPU就遇到大难题了。对于32位单片机,利用Q化处理能发挥他本身的性能,但是精度和速度仍然不会提高很多。现在设计出了一个新的CPU,叫做FPU,这个芯片专门处理浮点数的运算,这样处理器就将整点数和浮点数分开来处理,整点数交由定点CPU处理而浮点数交由FPU处理。我们见...转载 2018-03-14 16:16:35 · 5547 阅读 · 0 评论 -
STM32 裸机FAULT处理
void HardFault_Handler(void){ /* Go to infinite loop when Hard Fault exception occurs */#ifdef CBK_DEBUG_DEF cm_backtrace_fault( cmb_get_lr(), cmb_get_sp());#endif asm(" BX lr ");//无条件转移指令,(适合裸机...原创 2018-03-14 16:43:53 · 1015 阅读 · 0 评论 -
STM32F407.FLASH 读写经验
现象:如下代码://从指定地址开始写入指定长度的数据//该函数对OTP区域也有效!可以用来写OTP区!//OTP区域地址范围:0X1FFF7800~0X1FFF7A0F//WriteAddr:起始地址(此地址必须为4的倍数!!)//pBuffer:数据指针//NumToWrite:字(32位)数(就是要写入的32位数据的个数.) void STMFLASH_Write(u32 WriteAddr,...转载 2018-03-28 13:39:10 · 8462 阅读 · 1 评论 -
STM32 PWM调制信号关闭后端口电平不确定处理
简介 在使用STM32的PWM做为调制信号时,遇到开关调制信号关闭后其信号不确定的问题,影响信号的调制,收集了些资料在这归纳整理。方法 当IO设置成PWM模式以后GPIO_ResetBits等设置语句就不管用了,如果不考虑时间点,调用TIM_CtrlPWMOutputs(TIMx,DISABLE);或TIM_Cmd(TIMx,DISABLE);定会产生关闭PWM后端口的电平不确定的情况。有2种办法...转载 2018-03-28 13:45:05 · 1970 阅读 · 0 评论 -
STM32建c++与c混合工程遇到的问题及解决
1. 以前的库函数怎么使用?在函数声明前加上 extern "C" 就可以了,因为C++支持函数重载之类的东东,所以生成的目标代码的名字和C会有些不同,用extern "C"强制成C语言的名字规则。现在新版本的库好像已经加上了,这里顺便问一下,新版本的库在官网的哪里下载?我不要一点就直接弹出下载的链接新版的库的头文件前面是#ifdef __cplusplusextern "C" {#endif后面...转载 2018-03-29 10:13:14 · 1810 阅读 · 0 评论 -
调试STM32F407+DP83848
早在还没有毕业前,就调试过STM32F407+DP83848,这次又调试了一次,居然花了2天时间。STM32支持两种工业级标准的接口,来与外部物理层 PHY模块相连,分别是独立于介质的接口(MII)和简化的独立于接口的接口(RMII)。之前PHY芯片使用的MII模式,现在的这次调试是使用的RMII模式(参考了各方原理图,主要还是以官方开发板的MB786为主)。我还是以一个ST官方手册上的图来说说我...转载 2018-03-29 10:28:06 · 2251 阅读 · 0 评论 -
STM32F4-IAP
正文不得不提的启动方式STM32支持三种启动方式 1. FLASH启动 2. SRAM启动 3. 系统存储器启动这三种启动顺序决定了上电后第一条指令的位置。如果你选择FLASH启动,则上电复位后PC指针指向第一条指令位置——0x08000000,如果你选择SRAM启动,则上电复位后PC指针指向第一条指令位置——0X20000000,若你选择系统存储器启动,则上电复位后PC指针指向第一条指令位置——...转载 2018-04-05 14:49:56 · 568 阅读 · 0 评论 -
STM32外拓RAM
STM32外扩SRAM这两天调试STM32F103外扩SRAM,将调试过程中遇到的问题记录下,SRAM的规格是256K*16的异步SRAM,地址总线为18,数据线宽度为16.在调试过程中遇到一些小问题,希望读者能少走些弯路。先看一下FSMC内存映射图:由图可知,stm32的FSMC模块分为四个bank,每个bank的大小事64M。 下面这张图是FSMC各个块的信号分配图。 由上图可知,bank1 ...转载 2018-05-02 10:20:06 · 2153 阅读 · 0 评论 -
STM32 输入捕获的脉冲宽度及频率计算
输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。以下是对脉冲宽度及频率的计算。1、脉冲宽度如下图所示,采集该高电平脉冲的宽度,只需要进入输入捕获上升沿检测,记录当前的发生上升沿时的CNT值,再进行输入捕获下降沿检测,也记录当前发生下降沿时的CNT值,两次CNT值的差值再根据计数的频率就可以算出脉冲的宽度。上升沿及下降沿捕...转载 2018-05-02 10:30:53 · 8667 阅读 · 1 评论 -
STM32 DMA USART串口发送解析
数据传输时要从支持那些相关的标准?传输的速度?什么时候开始?什么时候结束?传输的内容?怎样防止通信出错?数据量大的时候怎么弄?硬件怎么连接出发,当然对于stm32还要熟悉库函数的功能具起来rs232和485电平的区别硬件外围芯片,波特率(反映传一位的时间),起始位和停止位,数据宽度,校验,硬件流控制,相应连接电脑时的接口怎么样的。配置,使用函数,中断,查询并结合通信协议才算了解了串口使用。...转载 2018-12-12 17:00:43 · 2208 阅读 · 0 评论 -
stm32串口不定长数据接收(hal库)的若干问题
http://www.stmcu.org/module/forum/thread-606385-1-1.htmlhttps://blog.csdn.net/u014515202/article/details/73293917/https://blog.csdn.net/qq_24376681/article/details/78729946使用串口空闲中断和DMA配合时出现的问题:...转载 2018-12-13 17:26:05 · 5818 阅读 · 0 评论 -
stm32 l0相关的eeprom
内部FLASH和EEPROM这种掉电后还能保存内容的内存统称为non-volatile memory(NVM),STM32L053内部有2K的EEPROM. 内部EEPROM的页大小为一个Word为单位,擦除是必须以页为单位,所以库函数里的擦除函数也是每次擦除4个字节: view plaincopy to clipboardprint?/** * @br...原创 2019-01-07 17:20:18 · 1614 阅读 · 0 评论 -
外加SRAM 配置ICF文件
每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接文件。对于基本的应用,这个.icf文件足以满足你的工程需要。但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf。1、Icf到底干了啥呢?定义了芯片存储空间的大小。定义ROM的大小和起始、结束地址。定义RAM的大小和起始、结束地址。当然这些都是最基本的,你也可以设置以下的东西来匹配你的具体项目。链接时是否保存位块...原创 2018-03-13 09:16:54 · 1498 阅读 · 0 评论 -
ARM CORTEX-M3 内核架构理解归纳
来源:网络 个人觉得对CM3架构归纳的非常不错,因此转载基于《ARM-CORTEX M3 权威指南》做学习总结;在我看来,Cotex-M3内核的主要包括:嵌套向量中断控制器(NVIC),取值单元,指令译码器,算数逻辑单元(ALU),寄存器组,存储器映射(4GB统一编址各区域功能的划分与界定),对于开发者而言,其实主要关注的主要分为三大块:1、寄存器组2、地址功能划分映射3、中断机制(NVIC)。 ...转载 2018-03-11 23:42:01 · 9545 阅读 · 0 评论 -
CM3 小结
转载 2018-03-11 23:40:41 · 280 阅读 · 0 评论 -
STM软件复位
记录下软件复位两个函数 __set_FAULTMASK(1); NVIC_SystemReset(); 我的STM32是F103系列,即CPU内核为Cortex M3,这两个函数在core_cm3.h里面都有定义, __set_FAULTMASK(1);是关闭所有中断的意思,目的是在执行NVIC_SystemReset();复位函数过程中不被中断所打断。 两个函数执行后系统复位原创 2017-06-19 22:54:41 · 1676 阅读 · 0 评论 -
STM CAN filter配置纪要
案例1:某工程师使用STM32F407VG开发产品,在做CAN的调试过程中发现,CAN1接收、CAN2发送,工作正常。但反过来就有问题,即CAN2收,CAN1发就无法正常接收。 后来发现CAN 过滤器配置的地方有问题。他使用STM32Cube固件库,两句关键代码如下:sFilterConfig.FilterNumber = m; //……【1】 sFilterConfig.BankNumbe原创 2017-06-19 23:37:37 · 12059 阅读 · 4 评论 -
IAR 工程文件
1.宏定义全部用大写加下滑杠:DRINK_VALUE2.局部变量用小写加下滑杠:drink_value3.全局变量用首字母大写加下滑杠:Drink_Value4.常量定义尽量用枚举来归类,而不是用#define: enum { MSG_RemindDrink = 0x02, MSG_Temperature =原创 2017-07-13 21:37:58 · 2769 阅读 · 0 评论 -
IAR环境下STM32+IAP方案的实现(转)
–基于STM32F103ZET6的UART通讯实现一、什么是IAP,为什么要IAP IAP即为In Application Programming(在应用中编程),一般情况下,以STM32F10x系列芯片为主控制器的设备在出厂时就已经使用J-Link仿真器将应用代码烧录了,如果在设备使用过程中需要进行应用代码的更换、升级等操作的话,则可能需要将设备返回原厂并拆解出来再使用J-Link重转载 2017-07-06 23:03:55 · 9277 阅读 · 3 评论 -
GPIO 配置
一、GPIO配置(1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_转载 2017-09-23 13:42:39 · 1254 阅读 · 0 评论 -
IAR STM32 函数和变量的绝对地址定位
能否利用函数和变量的绝对定位,实现程序的模块化更新。也就是说,如果我要改变某个函数,只需要更新flash里面一个局部,也许只需要更新几百个字节,而无须重新下载整个上百K的程序。经过查找资料和反复实验,终于实现了,现总结如下:1) 把函数定位在FLASH高端的指定位置,以后更新,只更新那小块地方就可以了。方法一:IAR里面进行函数定位, 必须要在.icf里面,进行定义。void sendstr(un转载 2017-07-06 23:19:37 · 1037 阅读 · 0 评论 -
小问题笔记
stm32f105c8t6,float浮点运算加减乘除,会导致丢失一点点数据,如果操作的乘除是2的幂次方,那么可以考虑位操作代替float浮点运算,可以得到想要的不丢失的数据。比如计算剩余里程CAN数据:RxMessage:5F7 :0x03 ,0x82,0xD8,0xA4,0x00,0x00,0x03,0x00;(D3(低4位)+D2)/4;12位数;1、CurMileageRema原创 2017-06-22 22:15:20 · 1284 阅读 · 0 评论 -
STM32 配置AD,配置DMA
STM32f105rct6:配置AD,配置DMA 两路AD取值通道: 配置AD:void ADC_Configuration(void){ ADC_InitTypeDef ADC_InitStructure; ADC_StructInit(&ADC_InitStructure); /* ADC1 configuration ------------------------原创 2017-12-22 14:59:01 · 1699 阅读 · 0 评论 -
key 模块,旋钮+按键,两路AD取值
/******************** (C) COPYRIGHT 2011 APTENON ******************** * File Name : key.c * Author : edwin kang * Version : V0.0 * Date : 11/30/2011 *原创 2017-12-22 10:50:49 · 2392 阅读 · 0 评论 -
模拟IIC
标记下模拟IIC驱动代码#if 1/////////////////////////////////////////////////////////////////////////////////////////I2C sound/////////////////////////////////////////// Set I2C SCL pin high/low.原创 2018-01-26 14:35:55 · 381 阅读 · 0 评论 -
FatFs文件系统的移植
FatFs文件系统的移植 因为需要,又不想自己写,所以就移植了一个文件系统。 说下我的硬件和开发工具:接成 TRUE IDE 模式下的CF卡(也就是相当于一块硬盘了),三星S3C2440的ARM9,开发工具是很老很老的D版的ADS1.2。 我在网上看到的嵌入式系统上面常用的文件系统有UCOSII公司的UC/FS,支持CF卡,硬盘,SD/MMC卡,还有NANDFLASH等等,比较多...转载 2018-03-15 10:30:06 · 583 阅读 · 0 评论 -
片内Flash的认识
片上Flash(Embedded Flash)若干问题,包括Flash大小(内存映射)、块大小、页面大小、寄存器。这些知识,有利于写Flash驱动。通过数据手册(内存映射) 也可以通过数据手册得到Flash大小,首先根据型号从官网下得对应的数据手册Datasheet(点这里,输入MCU型号进行检索。STM32F103RB相关的手册都在这:http://www.st.com/internet...转载 2018-03-15 13:58:10 · 9463 阅读 · 0 评论 -
KEIL 分散加载
1.ARM映像文件ARM映像文件是一个层次性结构的文件,其中包含了域(region)、输出段(output section)和输入段(input section)。各部分关系如下:一个映像文件由一个或多个域组成每个域包含一个或多个输出段每个输出段包含一个或多个输入段各输入段包含了目标文件中的代码和数据输入段中包含了4类内容:代码、已经初始化的数据、未经初始化的存储区域、内容初始化成0的存储区域。每...转载 2018-03-15 14:19:00 · 736 阅读 · 0 评论 -
STM32休眠与唤醒
这两天研究了STM32的低功耗知识,低功耗里主要研究的是STM32的待机模式和停机模式。让单片机进入的待机模式和停机模式比较容易,实验中通过设置中断口PA1来响应待机和停机模式。voidEXTI1_IRQHandler(void){if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)){delay_ms(10);while(!GPIO_ReadInputData...转载 2018-03-11 23:31:49 · 27861 阅读 · 3 评论 -
STM32 L051 开发问题集合
STM32L051K8T6 一、使用官方的HAL库作串口驱动,与之前的驱动库不一样,使用的是串口中断接收不定长数据,然后通过DMA发送出来;在调试过程中出现的问题是 串口中断接收数据,出现丢失字符现象,经过配置串口的中断优先级与DMA中断的优先级得到问题的解决。以下是程序代码例程链接https://download.csdn.net/download/huan447882949/10...原创 2019-01-18 16:34:19 · 3557 阅读 · 0 评论