需要三个变量,程序如下所示:
void write_buf(u32 addr,u8 *p,u16 n)
{
u32 r1
n=n/4//擦除并写flash
FLASH_Unlock()//FLASH解锁
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR)//清标志位
FLASH_ErasePage(addr)
while(n--)
{r1=*(p++)
r1|=*(p++)<<8
r1|=*(p++)<<16
r1|=*(p++)<<24
FLASH_ProgramWord(addr, r1)
addr+=4
}
}
void read_buf(u32 addr,u8 *p,u16 n)
{
while(n--)
{
*(p++)=*((u8*)addr++)
}
}
你说的是烧录二进制到STM中吧,STM内部集成的有ISP模块,电脑安装mcuisp,链接STM32的串口就可以烧录。如果是开发STM软件的话,建议用MDK+官方代码包。在MDK下可以用50块钱的Jlink仿真下载。不用jlink也行,STM串口和电脑串口对接,用mcuisp烧录。
要回答这个问题不太容易,首先你要有掌握一些基本的技能,比如C语言,这是最基本的。有了这个基础后,如果你是新手:首先,建议你买一块STM32的开发板,很便宜(100多元的就有很多),这类开发板基本上会提供很多供你上手和调试的例程(你说的串口通信以及IO控制LED,都是很通用的例程);
然后你根据这些例程,仔细看,慢慢调,一定要弄懂代码的功能;
最后,我相信,等你调试完2~3个例程后,你提的问题,就很容易解决了。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)