zoukankan      html  css  js  c++  java
  • MM32Flash读写操作(兼容STM32)

    MM32Flash读写操作(兼容STM32)

    Flash基础描述

    思维导图

    编程实现读写操作

    主函数结构

    #include "delay.h"
    #include "sys.h"
    #include "led.h"
    #include "uart.h"
    #include "flash.h"
    
    void flashwrite(char* data);
    void flashread();
    /********************************************************************************************************
    **函数信息 :main(void)                     
    **功能描述 :
    **输入参数 :无
    **输出参数 :无
    ********************************************************************************************************/
    int main(void)    
    {
    	u8 t = 0;
        char data[] = {"Hello,world."};  //将要写入的数据
    	
    	delay_init();
    	LED_Init();
    	uart_initwBaudRate(9600);
            
        flashwrite(data);
        flashread();
     
    	
    	while(1)              //LED,无限循环
    		{
    			printf("program ok
    ");
                flashread();             //从flash读写入的数据
    			LED1_TOGGLE();
    			LED2_TOGGLE();
    			LED3_TOGGLE();
    			LED4_TOGGLE();
    			delay_ms(1000);
    		}
    }
    

    Flash写操作

    #include "flash.h"
    #include "uart.h"
    #include "flash.h"
    
    void flashwrite(char* data)
    {
        u32 baseaddr = 0x08002ffc;  //查看Flash地址,定义将要写入的起始地址
        int i = 0;
    	/* Porgram FLASH Bank1 ********************************************************/       
    	/* Unlock the Flash Bank1 Program Erase controller */
    	FLASH->KEYR = 0x45670123;  //解锁
    	FLASH->KEYR = 0xCDEF89AB;
    	
    	/* Clear All pending flags */
    	FLASH->SR = 0x00000001|0x00000004|0x00000010;
    	
        //PG(Programming) = 1,选择编程操作
    	FLASH->CR |= 0x1;
    	
        while(i < 12)       //循环写入数据
        {
            *(__IO uint16_t*)baseaddr = *data | *(data + 1)<<8;
            baseaddr = baseaddr + 2;
            data += 2; 
            i++;        
        }       
            
        //Lock flash
        FLASH->CR |= 0x00000080;
    }
    

    Flash读操作

    #include "flash.h"
    #include "uart.h"
    #include "flash.h"
    
    void flashread()
    {
    	/* Porgram FLASH Bank1 ********************************************************/       
    
        u32 baseaddr = 0x08002ffc;  //查看Flash地址,定义将要读取的起始地址
        char out[15];
        int i = 0;
        
        while(i < 15)              //循环读取数据
        {
            out[i] = *(__IO uint8_t*)baseaddr;
            baseaddr = baseaddr + 1;
            printf("%c",out[i]);  //通过uart打印输出到串口助手窗口
            i++;
             
        }
        printf("
    ");
    }
    

    实现结果


    参考资料

    [1]. MM32 miniboard资料

  • 相关阅读:
    新手找客户,牢记20句话
    我国第二套人民币纸分币明天起停止流通
    新病毒仿"熊猫烧香" 利用 Vista系统漏洞疯狂传播
    开发新客户的5个巧招
    Google推出语音本地搜索 与微软展开竞争
    最近大牛生病了
    成功创业的“六字真言”
    ios的AutoresizingMask
    ASIHttpRequest 详细解析
    How to get md5 and SHA1 in objective c (iOS sdk)
  • 原文地址:https://www.cnblogs.com/OneFri/p/6130712.html
Copyright © 2011-2022 走看看