历史上的今天
今天是:2025年02月18日(星期二)
2019年02月18日 | 【单片机笔记】STM8S系列单片机FLASH操作
2019-02-18 来源:eefocus
1. 修改stm8s_conf.h的注释,让#include "stm8s_flash.h"得以编译
2.修改stm8s.h的注射,让使Flash功能能够从RAM中运行
#if !defined (RAM_EXECUTION)
#define RAM_EXECUTION (1) // 块写入时,必须打开这里的注射
#endif /* RAM_EXECUTION */
3.修改完成后,将产生不少警告,消除的方法,暂时还没有找到,但不影响代码的运行。
附上代码:
#include "fy_flash.h"
//操作flash前需要取消注释stm8s.h中154行的/* #define RAM_EXECUTION (1) */
//从块的指定的第三个字节读取数据(词条序号)
u8 Flash_ReadByte_3(u8 Block)
{
u32 addr;
addr = FLASH_PROG_START_PHYSICAL_ADDRESS + Block*FLASH_BLOCK_SIZE;
return FLASH_ReadByte(addr+2);
}
//向Flash指定的块写入内容
void Flash_WriteBlock(u8 Block , u8 *buf)
{
if(Block>FLASH_PROG_BLOCKS_NUMBER) return;
FLASH_Unlock(FLASH_MEMTYPE_PROG); //解锁flash
while (FLASH_GetFlagStatus(FLASH_FLAG_PUL) == RESET); //等待解锁标志位置位
//块标准编程,写入前,硬件自动删除内容
FLASH_ProgramBlock(Block, FLASH_MEMTYPE_PROG, FLASH_PROGRAMMODE_STANDARD,buf);
//等待操作完成
FLASH_WaitForLastOperation(FLASH_MEMTYPE_PROG);
//操作完上锁
FLASH_Lock(FLASH_MEMTYPE_PROG);
}
//从Flash指定数量的块读取内容
void Flash_ReadBlock(u8 Block ,u8 *buf)
{
u8 i;
u32 addr;
u8 sta=0;
if(Block>FLASH_PROG_BLOCKS_NUMBER) return;
//计算地址
addr = FLASH_PROG_START_PHYSICAL_ADDRESS + Block*FLASH_BLOCK_SIZE;
for(i=0;i { *(buf+i) = FLASH_ReadByte(addr+i); //读取一块数据 /* if(buf[i]=='\r' && sta==0) sta=1; else if(buf[i]=='\n' && sta==1) return; else sta=0; */ } } void Flash_Test(void) { u8 write_buf[FLASH_BLOCK_SIZE]="MARS->This is a Flash Data Memory write and read test...\r\n"; u8 read_buf[FLASH_BLOCK_SIZE]; Flash_WriteBlock(120,write_buf); Flash_ReadBlock(120,read_buf); UART1_SendString(read_buf); while(1) { LED_TOG;Delay_ms(350); } } /*********************************************END OF FILE**********************************************/
史海拾趣
|
用一块2410板子上的wince系统调用webservice必须要板子和电脑联网吗?利用usb连接是否可以?怎样才能配置板子上的wince的ip使得wince与pc可以相互ping通?求救!!!… 查看全部问答> |
|
让GPRS模块智能化,嵌入应用更轻松 目前GPRS模块供应商,各自提供自己的标准品, 面对不同行业应用,用户必须自己编写软件来 使用通信功能。这要求用户必须熟悉GSM通信, 可能需要更改原有产品设计,用户需要反复调试, 延长产 ...… 查看全部问答> |
|
平台:WINCE6.0+S3C6410 camera 驱动已写好,用BSP里面的CameraDshowApp.exe,能正常地进行120x160、320x240、 640x480进行预览, 但是现在用了某家开发板的camera App DEMO,能用120x160进行预览,但是当调到640x480进行预览,就出现 ...… 查看全部问答> |
|
使用8962範例专案enet_lwip中加入tcp client,使mcu能连接到PC端的tcp listener. 已测试可正常连线至pc,接通时发送6个byte至pc端去,如下程式码:static err_tTcpClient_Connected(void *arg, struct tcp_pcb *pcb, err_t err){unsigned char bb[ ...… 查看全部问答> |
|
应用MDK 执行代码char *test="汉字"后,test内的内容为“汉字”的AnsiCode内码:BABAD7D6 我希望test内的内容是“汉字”的UniCode内码:496C575B 请问应该如何设置?… 查看全部问答> |
|
德州仪器 (TI) 为各种应用(包括基于 ARM® 的微处理器 (ARM MPU) 和数字信号处理器 (DSP))的开发提供了广泛的嵌入式处理器平台。 请浏览我们的选择指南以选择适合您的应用开发的器件。 * Sitara™ ARM 微处理器 ...… 查看全部问答> |
|
请问大家现在都用什么PCB制图软件?altium designer有msp430库么? 请问大家现在都用什么PCB制图软件?altium designer现在比例怎样?altium designer有msp430的sch和pcb的封装库么?谢谢… 查看全部问答> |




