中级会员
 
- 积分
- 223
- 金钱
- 223
- 注册时间
- 2016-7-15
- 在线时间
- 67 小时
|
问题描述:
当使用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]);
}
|
|