作业:
1.用实验验证,对于有数据的某扇区,如果没有擦除(
Flash_erase
),可否写入新数据?注:扇区号为学号 后
2
位,数据文本中要有姓名。
2.在
ADC
模块中,显示当前温度和芯片内部温度,感受温度变化(分别用冷、热触碰)。
实验过程:
1.用实验验证,对于有数据的某扇区,如果没有擦除(Flash_erase),可否写入新数据?注:扇区号为学号 后2位,数据文本中要有姓名。
步骤:
(扇区号就不要按学号了,太小的会被冲。可以写50。不进行擦除操作就把第二次输入前的擦除函数注释掉;)

导入flash工程,main.c中:
//擦除第50扇区
flash_erase(50);
//向50扇区第0偏移地址开始写32个字节数据
flash_write(50,0,32,(uint8_t *) "My name is CJB");
flash_read_logic(mK1,50,0,32); //从50扇区读取32个字节到mK1中
printf("逻辑读方式读取50扇区的32字节的内容: %s\n",mK1);
flash_write(50,0,32,(uint8_t *) "My name is CCC");
flash_read_logic(mK2,50,0,32); //从50扇区读取32个字节到mK2中
printf("逻辑读方式读取50扇区的32字节的内容: %s\n",mK2);
结果:
- 结论:对于有数据的某扇区,如果没有擦除(Flash_erase),仍可写入新数据。
2.在ADC模块中,显示当前温度和芯片内部温度,感受温度变化(分别用冷、热触碰)。
步骤:
导入工程ADC-STM32L431-20220613,
main.c:
//(1)======启动部分(结尾)==========================================
//(2)======主循环部分(开头)========================================
//for(;;)(开头)
for(;;)
{
//主循环次数变量+1
mMainLoopCount++;
//未达到主循环次数设定值,继续循环
//延时1秒
if (mMainLoopCount<=30000000) continue;
//达到主循环次数设定值,执行下列语句,进行灯的亮暗处理
//清除循环次数变量
mMainLoopCount=0;
num_AD1 = adc_ave(ADC_CHANNEL_1,8);
num_AD2 = adc_ave(ADC_CHANNEL_15,8);
num_AD3 = adc_ave(ADC_CHANNEL_TEMPSENSOR,8);
printf("通道1(GEC47、46)的A/D值: %d\r\n",num_AD1);
printf("通道1(GEC47、46)的温度值: %f\r\n",Regression_Ext_Temp(num_AD1));
printf("通道15(GEC12、11)的A/D值:%d\r\n",num_AD2);
printf("通道15(GEC12、11)的温度值:%f\r\n",Regression_Ext_Temp(num_AD2));
printf("内部温度传感器的A/D值:%d\r\n",num_AD3);
printf("内部温度传感器的温度值:%f\r\n\n",Regression_MCU_Temp(num_AD3));
}
//for(;;)结尾
//(2)======主循环部分(结尾)========================================
} //main函数(结尾)
测试结果:


摸了热敏电阻和芯片,感觉没啥明显变化...