1.用实验验证,对于有数据的某扇区,如果没有擦除(Flash_erase),可否写入新数据?注:扇区号为学号 后2位,数据文本中要有姓名。
#define GLOBLE_VAR
#include "includes.h"
int main(void)
{
uint32_t mMainLoopCount;
uint8_t mFlag;
uint32_t mLightCount;
uint8_t mK1[32];
uint8_t mK2[32];
uint8_t flash_test[32]={'A','B','C','D','E','F','G',' ','t',
'o',' ','S','o','o','c','h','o','w',' ',
'U','n','i','v','e','r','s','i','t','y','!'};
uint8_t result;
DISABLE_INTERRUPTS;
mMainLoopCount=0;
mFlag='A';
mLightCount=0;
gpio_init(LIGHT_BLUE,GPIO_OUTPUT,LIGHT_ON);
ENABLE_INTERRUPTS;
printf("------------------------------------------------------\n");
printf("金葫芦提示: \n");
printf("目的:flash扇区读写数据测试 \n");
printf(" 第一种:使用flash_write向65扇区写入一串字符串 \n");
printf(" 再用flash_read_logic将字符串读出,并用printf打印 \n");
printf("------------------------------------------------------\n");
flash_erase(65);
flash_write(65,0,32,(uint8_t *) "广州大学 32106100165 莫云江");
flash_read_logic(mK1,65,0,32);
printf("逻辑读方式读取65扇区的32字节的内容: %s\n",mK1);
flash_erase(65);
flash_write_physical(0x8019000,32,flash_test);
flash_read_physical(mK2,0x8019000,32);
printf("物理读方式读取65扇区的32字节的内容: %s\n",mK2);
result = flash_isempty(50,MCU_SECTORSIZE);
printf("第65扇区是否为空,1表示空,0表示不空:%d\n",result);
for(;;)
{
mMainLoopCount++;
if (mMainLoopCount<=12888999) continue;
mMainLoopCount=0;
if (mFlag=='L')
{
mLightCount++;
printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
mFlag='A';
gpio_set(LIGHT_BLUE,LIGHT_ON);
printf(" LIGHT_BLUE:ON--\n");
}
else
{
mFlag='L';
gpio_set(LIGHT_BLUE,LIGHT_OFF);
printf(" LIGHT_BLUE:OFF--\n");
}
}
根据实验结果在未对指定扇区擦除的情况下直接写入,写入会失败,即操作扇区时,没有擦除不可写入新数据。
2.在ADC模块中,显示当前温度和芯片内部温度,感受温度变化(分别用冷、热触碰)。
#define GLOBLE_VAR
#include "includes.h"
int main(void)
{
uint32_t mMainLoopCount;
uint8_t mFlag;
uint32_t mLightCount;
uint8_t mK1[32];
uint8_t mK2[32];
uint8_t flash_test[32]={'A','B','C','D','E','F','G',' ','t',
'o',' ','S','o','o','c','h','o','w',' ',
'U','n','i','v','e','r','s','i','t','y','!'};
uint8_t result;
DISABLE_INTERRUPTS;
mMainLoopCount=0;
mFlag='A';
mLightCount=0;
gpio_init(LIGHT_BLUE,GPIO_OUTPUT,LIGHT_ON);
ENABLE_INTERRUPTS;
printf("------------------------------------------------------\n");
printf("金葫芦提示: \n");
printf("目的:flash扇区读写数据测试 \n");
printf(" 第一种:使用flash_write向65扇区写入一串字符串 \n");
printf(" 再用flash_read_logic将字符串读出,并用printf打印 \n");
printf("------------------------------------------------------\n");
flash_erase(65);
flash_write(65,0,32,(uint8_t *) "广州大学 32106100165 莫云江");
flash_read_logic(mK1,65,0,32);
printf("逻辑读方式读取65扇区的32字节的内容: %s\n",mK1);
flash_erase(65);
flash_write_physical(0x8019000,32,flash_test);
flash_read_physical(mK2,0x8019000,32);
printf("物理读方式读取65扇区的32字节的内容: %s\n",mK2);
result = flash_isempty(50,MCU_SECTORSIZE);
printf("第65扇区是否为空,1表示空,0表示不空:%d\n",result);
for(;;)
{
mMainLoopCount++;
if (mMainLoopCount<=12888999) continue;
mMainLoopCount=0;
if (mFlag=='L')
{
mLightCount++;
printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
mFlag='A';
gpio_set(LIGHT_BLUE,LIGHT_ON);
printf(" LIGHT_BLUE:ON--\n");
}
else
{
mFlag='L';
gpio_set(LIGHT_BLUE,LIGHT_OFF);
printf(" LIGHT_BLUE:OFF--\n");
}
}
用手触摸芯片表面
A/D值增大