STM32地址偏移
https://blog.csdn.net/Britripe/article/details/83792909
我的例子是要控制8个重量。
将地址存入偏移量为0x8020000起始的地方
#ifndef BALANCE_H
#define BALANCE_H
#include “stm32f10x.h”
#include “stm32f10x_gpio.h”
//Ô±¾µÄÍ·ÎļþÄÚÈÝ¡£
#include “pbdata.h”
#ifdef __cplusplus
extern “C” {
#endif
#define __IO volatile
//0x8020100ÔÚFLASHÇøÄÚ£¬Ô¶³¬³ö³ÌÐò¶ÎÓÃÀ´±£´æ²ÎÊý
#define BALANCE1_ADDR ((uint32_t)0x8020100) //³Æ1±£´æµØÖ·
#define BALANCE2_ADDR ((uint32_t)0x8020200) //³Æ1±£´æµØÖ·
#define BALANCE3_ADDR ((uint32_t)0x8020300) //³Æ1±£´æµØÖ·
#define BALANCE4_ADDR ((uint32_t)0x8020400) //³Æ1±£´æµØÖ·
#define BALANCE5_ADDR ((uint32_t)0x8020500) //³Æ1±£´æµØÖ·
#define BALANCE6_ADDR ((uint32_t)0x8020600) //³Æ1±£´æµØÖ·
#define BALANCE7_ADDR ((uint32_t)0x8020700) //³Æ1±£´æµØÖ·
#define BALANCE8_ADDR ((uint32_t)0x8020800) //³Æ1±£´æµØÖ·
typedef struct
{
__IO float setting_weight; //Óû§ÉèÖÃÄ¿±êÖØÁ¿
__IO float sensitivity; //ÁéÃô¶È
__IO float scale; //Á¿³Ì
__IO u32 filter_times; //¹ýÂË´ÎÊý
__IO float correct_factor; //ÐÞÕýÒòËØ
__IO float hugebias; //´óÆ«²î
__IO float middlebias; //ÖÐÆ«²î
__IO float littlebias; //Сƫ²î
}struct_balance;
#define BALANCE1 ((struct_balance*)BALANCE1_ADDR)
#define BALANCE2 ((struct_balance*)BALANCE2_ADDR)
#define BALANCE3 ((struct_balance*)BALANCE3_ADDR)
#define BALANCE4 ((struct_balance*)BALANCE4_ADDR)
#define BALANCE5 ((struct_balance*)BALANCE5_ADDR)
#define BALANCE6 ((struct_balance*)BALANCE6_ADDR)
#define BALANCE7 ((struct_balance*)BALANCE7_ADDR)
#define BALANCE8 ((struct_balance*)BALANCE8_ADDR)
class balanceclass{
private:
float value;//ʵ¼ÊÖØÁ¿
float settingvalue;//ÉèÖÃÖØÁ¿
float hugeoffset;//´óÖØÁ¿Æ«²î
float middleoffset;
float smalloffset;
float sensitivity;//ÁéÃô¶È
float scale;//Á¿³Ì
u32 filter_number;//Â˲¨´ÎÊý
float correction_factor;//ÐÞÕýϵÊý
public:
balanceclass(float scale,u32 filter_times,float correct_fator,float hugebias,float middlebias,float smallbias );
void set_settingvalue(float weight);
float get_settingvalue();
void set_hugeoffset(float bias);
float get_hugeoffset();
void set_middleoffset(float bias);
float get_middleoffset();
void set_smalloffset(float bias);
float get_smalloffset();
void set_sensitivity(float weight);
float get_sensitivity();
void set_scale(float scale);
float get_scale();
void set_filter_number(u32 times);
u32 get_filter_number();
void set_correction_factor(float factor);
float get_correction_factor();
};
#ifdef __cplusplus
}
#endif
#endif