OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3848|回复: 0

关于flash写入与串口发送有关问题

[复制链接]

9

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-7-15
在线时间
67 小时
发表于 2020-4-11 19:33:23 | 显示全部楼层 |阅读模式
问题描述:
当使用printf(代码中红色语句)打印时,flash每次都能写进入
[2020-04-11 19:19:37.944]# RECV HEX>
79 56 34 12   79 56 34 12  31 32 33 34 35 36 37 39 20 31 32 33 34 35 36 37 39 0D 0A  [2020-04-11 19:19:56.698]# RECV HEX>
7A 56 34 12   7A 56 34 12
31 32 33 34 35 36 37 41 20 31 32 33 34 35 36 37 41 0D 0A
[2020-04-11 19:20:14.192]# RECV HEX>
7B 56 34 12   7B 56 34 12
31 32 33 34 35 36 37 42 20 31 32 33 34 35 36 37 42 0D 0A
但当把printf去掉之后只能写入一次
[2020-04-11 19:24:26.128]# RECV HEX>
79 56 34 12 79 56 34 12
[2020-04-11 19:24:27.357]# RECV HEX>
79 56 34 12 7A 56 34 12
[2020-04-11 19:24:28.481]# RECV HEX>
79 56 34 12 7B 56 34 12
请问有人遇到过这种问题吗
代码如下:

u32 falsh_test[1]={0x12345678};
u32 falsh_test1[1]={0x87654321};
u8 falsh_test2[4]={0};
u32 tx_ant_connection[6]={0};
//要写入到STM32 FLASH的字符串数组
const u8 TEXT_Buffer[]={"STM32 FLASH TEST"};
#define TEXT_LENTH sizeof(TEXT_Buffer)                                   //数组长度       
#define SIZE TEXT_LENTH/4+((TEXT_LENTH%4)?1:0)

#define FLASH_SAVE_ADDR  0X0800C004         //设置FLASH 保存地址(必须为偶数,且所在扇区,要大于本代码所占用到的扇区.
                                                                                //否则,写操作的时候,可能会导致擦除整个扇区,从而引起部分程序丢失.引起死机.
int main(void)
{
        u8 key=0;
        u16 i=0;
        u8 datatemp=0;       
        u8 key_num=0;       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);  //初始化延时函数
        uart_init(115200);                //初始化串口波特率为115200
       
        LED_Init();                                        //初始化LED
        LCD_Init();                                        //LCD初始化  
        KEY_Init();                                        //按键初始化
        while(1)
        {
                key=KEY_Scan(0);
                if(datatemp)
                 printf("%08X %08X\r\n",falsh_test1[0],tx_ant_connection[0]);
                if(key==KEY1_PRES)        //KEY1按下,写入STM32 FLASH
                {
                          falsh_test[0]++;
        STMFLASH_Write(FLASH_SAVE_ADDR,falsh_test,1);
        delay_ms(5);
                         tx_ant_connection[0] = 0;
       STMFLASH_Read(FLASH_SAVE_ADDR,tx_ant_connection,1);
                   Usart1_Send_Data((u8*)tx_ant_connection,4);
       Usart1_Send_Data((u8*)falsh_test,4);
       //printf("%08X %08X\r\n",falsh_test[0],tx_ant_connection[0]);

                }

































































































































































































正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-2 17:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表