嵌入式第八章作业

 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值增大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值