我是靠谱客的博主 高贵店员,最近开发中收集的这篇文章主要介绍GCC AVR(Atmel Studio+ AVR Studio)如何将结构体数组定义在程序存储器(flash)空间并进行读操作一、定义结构体二、添加头文件三、使用关键字 PROGMEM const 定义结构体数组四、结构体数组的读取操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、定义结构体

先添加#include <avr/io.h>。

#include <avr/io.h>

然后定义如下的结构体。 

	typedef struct tagFORMAT_SET_STRUCT
	{
    	uint8_t Decimal;
    	int16_t Min;
    	int16_t Max;
    	int16_t Default;
	} FORMAT_SET_STRUCT,*FORMAT_SET_STRUCT_PTR;

二、添加头文件<avr/pgmspace.h>

只有添加头文件<avr/pgmspace.h>才能进行程序存储器(flash)的定义和读取操作。

#include <avr/pgmspace.h>

三、使用关键字 PROGMEM const 定义结构体数组

PROGMEM const FORMAT_SET_STRUCT SET_DEFAULT_BUFFER[30] = {

{0x00 ,    0 , 9999 ,    0},	
{0x01 ,    0 , 1000 ,    0},	
{0x03 ,    0 , 29999 , 2430},	
{0x03 ,    0 , 29999 , 280},
{0x03 ,    0 , 29999 ,    0},	

{0x01 ,    0 ,    8 ,    6},	
{0x01 ,    0 ,  100 ,    0},	
{0x00 ,    0 ,    3 ,    0},	
{0x00 ,    1 ,    2 ,    2},	
    
{0x00 ,    0 ,    1 ,    0},	
{0x01 ,    0 ,  200 ,  100},	
{0x00 ,    0 ,    1 ,    0},	
{0x00 ,  -40 ,   40 ,    4},	

{0x00 ,    1 ,  200 ,    1},	
{0x00 ,    0 ,    8 ,    6},	
{0x00 ,    0 ,    2 ,    0},	
{0x00 ,    0 ,    1 ,    0},	

{0x00 ,    0 , 32767 , 1206},	
{0x00 ,    0 , 32767 , 6341},	
{0x00 ,    0 , 32767 , 350},	
{0x00 ,    0 , 32767 , 2410},	
{0x00 ,    0 , 32767 , 4218},	
{0x00 ,    0 , 32767 , 21006},
{0x00 ,    0 , 32767 , 4222},	
{0x00 ,    0 , 32767 , 21035},	

{0x00 ,    0 , 4095 ,  812},	
{0x00 ,    0 , 4095 , 3862},	
{0x00 ,    0 , 4095 ,  694},	
{0x00 ,    0 , 4095 , 3488},	
{0x00 ,    0 ,    1 ,    0},  
};

四、结构体数组的读取操作

1、读取结构体数组中的16位数值,使用pgm_read_word(&)库函数

例如:

int16_t m;

m = pgm_read_word(&SET_DEFAULT_BUFFER[0].Default);

2、读取结构体数组中的8位数值,使用pgm_read_byte(&)库函数

例如:

uint8_t n;

n = pgm_read_byte(&SET_DEFAULT_BUFFER[1].Decimal);

最后

以上就是高贵店员为你收集整理的GCC AVR(Atmel Studio+ AVR Studio)如何将结构体数组定义在程序存储器(flash)空间并进行读操作一、定义结构体二、添加头文件三、使用关键字 PROGMEM const 定义结构体数组四、结构体数组的读取操作的全部内容,希望文章能够帮你解决GCC AVR(Atmel Studio+ AVR Studio)如何将结构体数组定义在程序存储器(flash)空间并进行读操作一、定义结构体二、添加头文件三、使用关键字 PROGMEM const 定义结构体数组四、结构体数组的读取操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部