STM32通过串口接受文件写入Flash

        上次突发奇想,自己想做一个字库,就是把字模文件写入到FLASH里面;当时没有上位机,如果自己一个一个拆分发送很麻烦,所以自己找了很多资料,最后实现了字库。

        这个方法没有协议,所以有一定的概率出错。但是临时用一用是足够了。如果需要高稳定性,建议自己做上位机。

准备材料:带FLASH的板子

                usb转232的数据线

                正点原子XCOM串口助手

 串口波特率115200,最好不要太低;

设置延时100(最高),这个时间是让单片机把接受的数据写入到Flash。

首先找一个例程或着工程,最好是带SPI-FLASH驱动和串口驱动。

保证传输前已经格式化FLASH或者已经擦除需要的空间。

程序最好不要有其他中断或者其他任务,保证传输文件的准确性。

定义文件写入地址,后期取字模的时候需要用到。

开启空闲中断,因为我是在空闲中断里面处理数据。

uint32_t  WriteAddr = 0 ; //文件在flash中写入地址,根据自己的需要定义
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启串口接收中断
USART_ITConfig(USART2, USART_IT_IDLE, ENABLE);//开启串口空闲中断
void USART1_IRQHandler(void)
    {                	//串口1中断服务程序
	    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
            {  //字符接收中断
		        USART1_RX_BUF[length++] = USART1->DR & 0x0FF;
	        }
        else if(USART_GetITStatus(USART1, USART_IT_IDLE ) != RESET)
            {//空闲帧中断 每次发送完一帧数据就会进这里
		        //处理接受的数据
                //在这里写自己的SPI写入函数
                //以我自己的为例
                //W25Q128_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)   ;
                W25Q128_Write(USART1_RX_BUF, WriteAddr ,length)   ; //将串口接受的数据写FLASH
                 WriteAddr +=length;        //写入地址累加
	        }
    }

如果哪里有不懂得,可以留言或者评论,我会第一时间回复解答!

如果觉得还不错的话留个赞吧,感谢!

猜你喜欢

转载自blog.csdn.net/weixin_47041339/article/details/129039456