STM32CubeMx工具没有配置Flash应用。需用户调用库函数实现FLASH的擦除、读、写操作。
具体FLASH的擦除、读、写流程及具体配置详情需查看STM32 FLASH编程文档。
现贴出基于STM32CubeMX工具MDK建立的工程文档,实现的FLASH操作代码。
//读取指定地址的半字(16位数据)
//faddr:读地址(此地址必须为2的倍数!!)
//返回值:对应数据.
uint16_t STMFLASH_ReadHalfWord(uint32_t faddr)
{
return *(uint16_t*)faddr;
}
//从指定地址开始读出指定长度的数据
//ReadAddr:起始地址
//pBuffer:数据指针
//NumToWrite:半字(16位)数
void STMFLASH_Read(uint32_t ReadAddr,uint16_t *pBuffer,uint16_t NumToRead)
{
uint16_t i;
for(i=0;i{pBuffer[i]=STMFLASH_ReadHalfWord(ReadAddr);//读取2个字节.
ReadAddr+=2;//偏移2个字节.
}
}
//向指定扇区写入指定长度的数据
//WriteAddr:扇区起始地址
//pBuffer:数据指针
//NumToWrite:半字(16位)数(就是要写入的16位数据的个数.)
//注意,该处将数据长度写入了扇区的首地址
void FS_FLASH_WritePage(uint32_t WriteAddr,uint16_t *pBuffer,uint16_t NumToWrite)
{
uint16_t i=0;
if(NumToWrite>STM_SECTOR_SIZE)return ;//不大于该扇区范围
HAL_FLASH_Unlock();//解锁
HAL_STMFlASH_PageErase(WriteAddr);//擦除这个扇区
for(i=0;i{HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,WriteAddr,pBuffer[i]);
WriteAddr+=2;//地址增加2.
}
HAL_FLASH_Lock();//上锁
}
//OK
关键字:stm32 CubeMx falsh应用
引用地址:
stm32 CubeMx falsh应用
推荐阅读最新更新时间:2024-11-12 12:42
STM32 TALK | 无感FOC方案原理机器控制难点分析
1、电机控制方案的分析与选择 在永磁电机的无感控制策略中,主要有两大类:(1)无感方波控制;(2)无感FOC控制。 先谈谈无感方波控制。在无感方波控制中,主要是利用反电动势过零点的方式来得到换相信号(反电动势过零点的信号与电机的换相信号在相位上相差30°电角度)。为了得到反电动势过零的信号,通常采用两种方式:(1)硬件比较器法;(2)软件端电压采样法。这两种方法的原理大致是相同的,都是将检测得到的端电压的值与电机中性点电压进行比较来得到反电动势过零点的信号。在无感方波控制中,该检测手段的好坏将决定了控制性能的好坏。但无感方波控制通常会伴随着噪声大、转矩脉动大等缺点,因此仅在一些对电机无感控制要求不是很高的场合中较为适用。
[单片机]
STM32开发 -- Git的详细使用
在GPS部分有用到DMA,接下来看一下它的使用。 一、DMA简介 直接存储器存取(DMA) 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。 两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。 二、DMA主要特性 ● 12个独立的可配置的通道(请求): DMA1有7个通道, DMA2有5个通道 ● 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。 ● 在同一
[单片机]
基于STM32的Keil和偏移地址程序存储
有时候,我们不想让程序存储在起始的位置,比如现在有一段bootloader,对应的app(应用程序)存储的位置就会有一个偏移地址。那么,如何让程序存储在指定的偏移地址呢? 本文将结合STM32,给大家讲一讲在Keil和IAR开发环境中设置起始地址0x08010000的方法。 Keil配置方法 首先,打开工程目标选项:Project - Options for Target - Target。 修改目标ROM起始地址,如下图所示: 说明: 1、勾选的IROM即对应的存储区域; 2、起始地址(Start)和大小(Size)根据你实际情况进行配置。 IAR配置方法 类似方法,进入配置界面: 1、进入配置界面:Pooject
[单片机]
在STM32中如何配置片内外设使用的IO端口
首先,一个外设经过配置输入的时钟和初始化后即被激活(开启)。 如果需要使用该外设的输入输出管脚,则需要配置相应的GPIO端口;否则该外设对应的输入输出管脚可以做普通GPIO管脚使用。 STM32的输入输出管脚有下面8种可能的配置: 1. 浮空输入 2. 带上拉输入 3. 带下拉输入 4. 模拟输入 5. 开漏输出 6. 推挽输出 7. 复用功能的推挽输出 8. 复用功能的开漏输出 对应到外设的输入输出功能有下述三种情况: 一、外设对应的管脚为输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能的开漏输出。 二、外设对应的管脚为输入:则根据外围电路的配置可以选择浮空输入、带上拉输入或带下拉
[单片机]
STM32以太网通讯设计方案
基础常识: 网口芯片选型:W5100,W5500,CH9121,DM9000,DM9000A,ENC28J60,LAN91C111,RTL8019,LAN7820。 很多STM32内部不带以太网,带以太网功能的内部只有以太网MAC,没有PHY。因此需要外扩以太网芯片。对于不带以太网的STM32,外扩常用的芯片有SPI接口的ENC28J60和并口的DM9000芯片。对于带以太网的STM32还需要外扩一片PHY芯片。 网卡工作在OSI的最后两层,物理层(PHY)和数据链路层(MAC)。 物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为P
[单片机]
基于stm32精英版的温控风扇源码
用stm32F103ZET6精英版,温度传感器是DS18B20,1602液晶显示屏,利用温度来控制转速,液晶显示屏显示实时转速,也可手动调节转速。(采用pi控制) 电路原理图如下: 单片机源程序如下: #include delay.h #include key.h #include sys.h #include timer.h #include lcd1602.h #include encoder.h #include control.h #include usart.h #include usart3.h #include hc05.h #includ
[单片机]
STM32中USART常用的发送函数
1.中断模式 void USART2_IRQHandler(void) //串口2中断服务程序 { u8 u8Temp; /*****************发送中断************************************/ if (USART_GetITStatus(USART2, USART_IT_TXE) == SET) { if(TX2_cn == TX2_no) { DIS_485TX(); USART_ITConfig(USART2, USART_IT_TXE, DISABLE); USART_ITConfig(USART2, USART_IT_RXNE, EN
[单片机]
ST宣布量产STM32 F0系列入门级MCU
意法半导体(ST)近日在北京媒体沟通会上宣布,开始量产基于ARM Cortex-M0处理器内核的入门级STM32 F0系列32位MCU。其适于工业控制器、家庭自动化、打印机和白色家电等应用。
STM32 F0的主要特性包括:①工作频率48MHz时,性能为38DMIPS,独立第三方评测机构的CoreMark评分为68;24MHz时,22DMIPS,CoreMark39。11项外设映射在5通道的DMA,结合总线矩阵,使闪存中执行代码与DMA数据传输同步操作。
②四个低功耗模式包括5.3μA停止模式,实时时钟运行的2.8μA待机模式,电池供电模式下且实时时钟运行时0.4μA。1.8V/2-3.6V电源电压。功耗效率如图1所示。
[单片机]