可以!前提是写入的位置是空白没有代码的部分,调用库函数:
FLASH_Unlock(); //1、解锁Flash
FLASH_SetLatency(FLASH_Latency_2); //2、72MHz系统时钟下设置两个时钟延时
FLASH_ErasePage(addr); //3、擦除指定的页,addr是页的起始地址,一次擦除2KB
FLASH_ProgramHalfWord(WriteAddr,UsrCode) ; //4、指定地址写入数据,UsrCode是unsigned int类型,STM32的Flash是双字节(半字)写入。
FLASH_Lock(); //5、Flash上锁。
注意3、4步,这两个函数是有返回值,调用时候最好看返回值以确定操作是否成功,库函数在stm32f10x_flash.c中。
1、首先打开main.c文件,在头写一个delay的延时方法,如下图。
2、然后在延时方法下面写出自定义设置系统时钟的方法,如下图。
3、然后就可以在入口程序中首先调用 设置系统时钟方法,传入对应的参数,先设置好系统时钟,然后再设置LED灯的点亮熄灭之间加入延时方法,如下图。
4、然后编译代码,下图中可以看出0错误,0警告,如下图。
5、编译成功之后,就可以将代码下载到STM32F407的开发板中观察实验现象了。
这个连接倒是十分简单,串口连接只需三线
程序比较复杂,但卖模块有商家会给你例程,有51的和STM32的
如果找不到,可以搜一搜野火STM32开发板的资料或正点原子的资料,不买开发板,资料也可以下载
通过读寄存器的符号位进行判断
先将正弦波通过滞回比较器转变为方波。必要的话,在滞回比较器之前还可以加上低通滤波器。
方波频率测量采用单片机定时器的捕获输入模式,每次捕获中断时,计时器当前捕获值减去上一次的捕获值,得到信号周期,求倒数,就是频率,退出中断前,记得保存当前的定时器捕获值。
若精度要求不是很高,也可采用外部中断输入,中断设为边沿触发,在中断中,及时读取定时器的计数值并相减。
本文标签:stm32记录当前位置