LA4329 树状数组


【分析】:考虑第i个人当裁判。假设前i-1个人中有ci个比ai小,那么就有(i-1)-ci个比ai大;同理,设i+1到n有di个比ai小,那么就有(n-i)-di个比ai大。所以i当裁判有 ci(n-i-di)+ (i-ci-1)di种比赛。问题转换为求ci和di。

ci可以这么计算:从左到右扫描所有的ai,令x[j]表示目前为止已考虑过的所有ai中,是否存在一个ai=j(0表示没有,1表示有)。ci即为x[1]+x[2]+...+x[ai-1]. 初始化所有x[i]=0.计算ci,先设x[ai]=1,然后求前缀和。


代码如下:

#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;

typedef long long ll;
const int maxn = 2e4+10;
const int maxm = 1e5+10;
ll ans;
int a[maxn],x[maxm],c[maxn],d[maxn];
int n;

int lowbit(int d){return d&(-d);}

int sum(int id){
    int s = 0;
    while (id) {s += x[id]; id -= lowbit(id);}
    return s;
}

void add(int id, int d){
    while (id<=maxm-10){x[id]+=d; id+=lowbit(id);}
}

void init(){
   memset(x,0,sizeof(x));
   for (int i=1; i<=n; i++) {add(a[i],1); c[i] = sum(a[i]-1);}
   memset(x,0,sizeof(x));
   for (int i=n; i>=1; i--) {add(a[i],1); d[i] = sum(a[i]-1);}
}

int main(){
    int T;
    scanf("%d",&T);
    while (T--){
        scanf("%d",&n);
        for (int i=1; i<=n; i++) scanf("%d",&a[i]);
        init();
        ans = 0;
        for (int i=1; i<=n; i++) ans += (ll)(c[i]*(n-i-d[i])+(i-c[i]-1)*d[i]);
        printf("%lld\n",ans);
    }
    return 0;
}


#include "board.h" #include "string.h" const uint8_t passWordInit[4] = {3,1,2,4}; const uint8_t Channel_List[MAX_Channel_List] = {4, 6, 8, 72, 74}; volatile uint8_t KeyValue = 0; GUI_t GUI; DMX_t DMX; RDM_t RDM; Mode_t Mode; Set_t Set; Info_t Info; LED_t LED; Global_t GlobalVal; uint8_t uartrxdata[512]; void Board_Parameter_Init() { DMX.addr = 1; DMX.chIndex = 2; DMX.channel = Channel_List[DMX.chIndex]; GUI.pickThisItem = 0; GUI.index = addrIndex; GlobalVal.currentRun = runDMXAddr; LED.LimitR = 160; LED.LimitG = 170; LED.LimitB = 170; LED.LimitW = 170; LED.LimitY = 160; LED.LimitP = 200; LED.T_Limit = 60; GlobalVal.OTP = 1.0; GlobalVal.sysRest = 0; Mode.pixel_dimmer = 255; Mode.pixel_strobe = 0; Mode.pixel = 0; memset(Mode.pixel_R, 0x00, 19); memset(Mode.pixel_G, 0x00, 19); memset(Mode.pixel_B, 0x00, 19); memset(Mode.pixel_W, 0x00, 19); Mode.auto_dimmer = 255; Mode.auto_speed = 128; Mode.Prog = 0; Mode.macro_dimmer = 255; Mode.macro_strobe = 0; Mode.macro = 0; Mode.user_dimmer = 255; Mode.user_strobe = 0; Mode.user = 0; memset(Mode.user_R, 0x00, 3); memset(Mode.user_G, 0x00, 3); memset(Mode.user_B, 0x00, 3); memset(Mode.user_W, 0x00, 3); Mode.sound_dimmer = 255; Mode.sound_speed = 10; Set.display = OFF; Set.displayRev = OFF; Set.keyRev = OFF; Set.lock = OFF; Set.DMXFail = DMXFAIL_BLACKOUT; Info.softwareMajor = 3; Info.softwareMinor = 0; Info.temperature = 0; Info.minutes = 0; Info.hours = 0; Info.deviceID = (uint32_t)(DeviceID[2] << 24 | DeviceID[3] << 16 | DeviceID[4] << 8 | DeviceID[5]); Info.curev = 0; Info.curve = LINEAR; memset(LED.R, 0x00, 18); memset(LED.G, 0x00, 18); memset(LED.B, 0x00, 18); memset(LED.W, 0x00, 18); } void Board_Parameter_updata() { AT24C02_PageData[0][0] = AT24C02_FLAG; /* DMX */ AT24C02_PageData[0][1] = (uint8_t)(DMX.addr >> 8); AT24C02_PageData[0][2] = (uint8_t)(DMX.addr & 0xFF); AT24C02_PageData[0][3] = DMX.chIndex; AT24C02_PageData[0][4] = DMX.channel; AT24C02_PageData[0][5] = GUI.index; AT24C02_PageData[0][6] = GlobalVal.currentRun; AT24C02_PageData[0][7] = LED.LimitR; /* LED */ AT24C02_PageData[1][0] = LED.LimitG; AT24C02_PageData[1][1] = LED.LimitB; AT24C02_PageData[1][2] = LED.LimitW; AT24C02_PageData[1][3] = 0X00; AT24C02_PageData[1][4] = 0x00; AT24C02_PageData[1][5] = LED.T_Limit; AT24C02_PageData[1][6] = Info.minutes; AT24C02_PageData[1][7] = (uint8_t)(Info.hours >> 8); AT24C02_PageData[2][0] = (uint8_t)(Info.hours & 0xFF); /* Set */ AT24C02_PageData[2][1] = Set.display; AT24C02_PageData[2][2] = (Set.displayRev << 1) | (Set.keyRev); AT24C02_PageData[2][3] = Set.lock; AT24C02_PageData[2][4] = Set.DMXFail; AT24C02_PageData[2][5] = Mode.sound_dimmer; AT24C02_PageData[2][6] = Mode.sound_speed; /* Mode */ AT24C02_PageData[2][7] = Mode.pixel_dimmer; AT24C02_PageData[3][0] = Mode.pixel_strobe; AT24C02_PageData[3][1] = Mode.pixel; AT24C02_PageData[3][2] = Mode.pixel_R[0]; AT24C02_PageData[3][3] = Mode.pixel_G[0]; AT24C02_PageData[3][4] = Mode.pixel_B[0]; AT24C02_PageData[3][5] = Mode.pixel_W[0]; AT24C02_PageData[4][0] = Mode.pixel_R[1]; AT24C02_PageData[4][1] = Mode.pixel_G[1]; AT24C02_PageData[4][2] = Mode.pixel_B[1]; AT24C02_PageData[4][3] = Mode.pixel_W[1]; AT24C02_PageData[4][6] = Mode.pixel_R[2]; AT24C02_PageData[4][7] = Mode.pixel_G[2]; AT24C02_PageData[5][0] = Mode.pixel_B[2]; AT24C02_PageData[5][1] = Mode.pixel_W[2]; AT24C02_PageData[5][4] = Mode.pixel_R[3]; AT24C02_PageData[5][5] = Mode.pixel_G[3]; AT24C02_PageData[5][6] = Mode.pixel_B[3]; AT24C02_PageData[5][7] = Mode.pixel_W[3]; AT24C02_PageData[6][2] = Mode.pixel_R[4]; AT24C02_PageData[6][3] = Mode.pixel_G[4]; AT24C02_PageData[6][4] = Mode.pixel_B[4]; AT24C02_PageData[6][5] = Mode.pixel_W[4]; AT24C02_PageData[7][0] = Mode.pixel_R[5]; AT24C02_PageData[7][1] = Mode.pixel_G[5]; AT24C02_PageData[7][2] = Mode.pixel_B[5]; AT24C02_PageData[7][3] = Mode.pixel_W[5]; AT24C02_PageData[7][6] = Mode.pixel_R[6]; AT24C02_PageData[7][7] = Mode.pixel_G[6]; AT24C02_PageData[8][0] = Mode.pixel_B[6]; AT24C02_PageData[8][1] = Mode.pixel_W[6]; AT24C02_PageData[8][4] = Mode.pixel_R[7]; AT24C02_PageData[8][5] = Mode.pixel_G[7]; AT24C02_PageData[8][6] = Mode.pixel_B[7]; AT24C02_PageData[8][7] = Mode.pixel_W[7]; AT24C02_PageData[9][2] = Mode.pixel_R[8]; AT24C02_PageData[9][3] = Mode.pixel_G[8]; AT24C02_PageData[9][4] = Mode.pixel_B[8]; AT24C02_PageData[9][5] = Mode.pixel_W[8]; AT24C02_PageData[10][0] = Mode.pixel_R[9]; AT24C02_PageData[10][1] = Mode.pixel_G[9]; AT24C02_PageData[10][2] = Mode.pixel_B[9]; AT24C02_PageData[10][3] = Mode.pixel_W[9]; AT24C02_PageData[10][6] = Mode.pixel_R[10]; AT24C02_PageData[10][7] = Mode.pixel_G[10]; AT24C02_PageData[11][0] = Mode.pixel_B[10]; AT24C02_PageData[11][1] = Mode.pixel_W[10]; AT24C02_PageData[11][4] = Mode.pixel_R[11]; AT24C02_PageData[11][5] = Mode.pixel_G[11]; AT24C02_PageData[11][6] = Mode.pixel_B[11]; AT24C02_PageData[11][7] = Mode.pixel_W[11]; AT24C02_PageData[12][2] = Mode.pixel_R[12]; AT24C02_PageData[12][3] = Mode.pixel_G[12]; AT24C02_PageData[12][4] = Mode.pixel_B[12]; AT24C02_PageData[12][5] = Mode.pixel_W[12]; AT24C02_PageData[13][0] = Mode.pixel_R[13]; AT24C02_PageData[13][1] = Mode.pixel_G[13]; AT24C02_PageData[13][2] = Mode.pixel_B[13]; AT24C02_PageData[13][3] = Mode.pixel_W[13]; AT24C02_PageData[13][6] = Mode.pixel_R[14]; AT24C02_PageData[13][7] = Mode.pixel_G[14]; AT24C02_PageData[14][0] = Mode.pixel_B[14]; AT24C02_PageData[14][1] = Mode.pixel_W[14]; AT24C02_PageData[14][4] = Mode.pixel_R[15]; AT24C02_PageData[14][5] = Mode.pixel_G[15]; AT24C02_PageData[14][6] = Mode.pixel_B[15]; AT24C02_PageData[14][7] = Mode.pixel_W[15]; AT24C02_PageData[15][2] = Mode.pixel_R[16]; AT24C02_PageData[15][3] = Mode.pixel_G[16]; AT24C02_PageData[15][4] = Mode.pixel_B[16]; AT24C02_PageData[15][5] = Mode.pixel_W[16]; AT24C02_PageData[15][6] = Mode.pixel_Y[16]; AT24C02_PageData[15][7] = Mode.pixel_P[16]; AT24C02_PageData[16][0] = Mode.pixel_R[17]; AT24C02_PageData[16][1] = Mode.pixel_G[17]; AT24C02_PageData[16][2] = Mode.pixel_B[17]; AT24C02_PageData[16][3] = Mode.pixel_W[17]; AT24C02_PageData[16][4] = Mode.pixel_Y[17]; AT24C02_PageData[16][5] = Mode.pixel_P[17]; AT24C02_PageData[16][6] = Mode.pixel_R[18]; AT24C02_PageData[16][7] = Mode.pixel_G[18]; AT24C02_PageData[17][0] = Mode.pixel_B[18]; AT24C02_PageData[17][1] = Mode.pixel_W[18]; AT24C02_PageData[17][2] = Mode.pixel_Y[18]; AT24C02_PageData[17][3] = Mode.pixel_P[18]; AT24C02_PageData[17][4] = Mode.auto_dimmer; AT24C02_PageData[17][5] = Mode.auto_speed; AT24C02_PageData[17][6] = Mode.Prog; AT24C02_PageData[17][7] = Mode.macro_dimmer; AT24C02_PageData[18][0] = Mode.macro_strobe; AT24C02_PageData[18][1] = Mode.macro; AT24C02_PageData[18][2] = Mode.user_dimmer; AT24C02_PageData[18][3] = Mode.user_strobe; AT24C02_PageData[18][4] = Mode.user; AT24C02_PageData[18][5] = Mode.user_R[0]; AT24C02_PageData[18][6] = Mode.user_G[0]; AT24C02_PageData[18][7] = Mode.user_B[0]; AT24C02_PageData[19][0] = Mode.user_W[0]; AT24C02_PageData[19][1] = Mode.user_Y[0]; AT24C02_PageData[19][2] = Mode.user_P[0]; AT24C02_PageData[19][3] = Mode.user_R[1]; AT24C02_PageData[19][4] = Mode.user_G[1]; AT24C02_PageData[19][5] = Mode.user_B[1]; AT24C02_PageData[19][6] = Mode.user_W[1]; AT24C02_PageData[19][7] = Mode.user_Y[1]; AT24C02_PageData[20][0] = Mode.user_P[1]; AT24C02_PageData[20][1] = Mode.user_R[2]; AT24C02_PageData[20][2] = Mode.user_G[2]; AT24C02_PageData[20][3] = Mode.user_B[2]; AT24C02_PageData[20][4] = Mode.user_W[2]; AT24C02_PageData[20][5] = Mode.user_Y[2]; AT24C02_PageData[20][6] = Mode.user_P[2]; AT24C02_PageData[20][7] = Info.curev; AT24C02_PageData[21][0] = Info.curve; AT24C02_PageData[21][1] = 0; }; static void Board_Parameter_download() { /* DMX */ DMX.addr = (uint16_t)((AT24C02_PageData[0][1] << 8) | AT24C02_PageData[0][2]); DMX.chIndex = AT24C02_PageData[0][3]; DMX.channel = AT24C02_PageData[0][4]; GUI.index = (menuIndex_t)AT24C02_PageData[0][5]; GlobalVal.currentRun = (runMode_t)AT24C02_PageData[0][6]; /* LED */ LED.LimitR = AT24C02_PageData[0][7]; LED.LimitG = AT24C02_PageData[1][0]; LED.LimitB = AT24C02_PageData[1][1]; LED.LimitW = AT24C02_PageData[1][2]; LED.LimitY = AT24C02_PageData[1][3]; LED.LimitP = AT24C02_PageData[1][4]; LED.T_Limit = (AT24C02_PageData[1][5] > 85) ? 55 : AT24C02_PageData[1][5]; Info.minutes = AT24C02_PageData[1][6]; Info.hours = (uint16_t)((AT24C02_PageData[1][7] << 8) | AT24C02_PageData[2][0]); /* Set */ Set.display = AT24C02_PageData[2][1]; Set.displayRev = (AT24C02_PageData[2][2] >> 1); Set.keyRev = (AT24C02_PageData[2][2] & 0x01); Set.lock = AT24C02_PageData[2][3]; Set.DMXFail = AT24C02_PageData[2][4]; Mode.sound_dimmer = AT24C02_PageData[2][5]; Mode.sound_speed = AT24C02_PageData[2][6]; /* Mode */ Mode.pixel_dimmer = AT24C02_PageData[2][7]; Mode.pixel_strobe = AT24C02_PageData[3][0]; Mode.pixel = AT24C02_PageData[3][1]; Mode.pixel_R[0] = AT24C02_PageData[3][2]; Mode.pixel_G[0] = AT24C02_PageData[3][3]; Mode.pixel_B[0] = AT24C02_PageData[3][4]; Mode.pixel_W[0] = AT24C02_PageData[3][5]; Mode.pixel_Y[0] = AT24C02_PageData[3][6]; Mode.pixel_P[0] = AT24C02_PageData[3][7]; Mode.pixel_R[1] = AT24C02_PageData[4][0]; Mode.pixel_G[1] = AT24C02_PageData[4][1]; Mode.pixel_B[1] = AT24C02_PageData[4][2]; Mode.pixel_W[1] = AT24C02_PageData[4][3]; Mode.pixel_Y[1] = AT24C02_PageData[4][4]; Mode.pixel_P[1] = AT24C02_PageData[4][5]; Mode.pixel_R[2] = AT24C02_PageData[4][6]; Mode.pixel_G[2] = AT24C02_PageData[4][7]; Mode.pixel_B[2] = AT24C02_PageData[5][0]; Mode.pixel_W[2] = AT24C02_PageData[5][1]; Mode.pixel_Y[2] = AT24C02_PageData[5][2]; Mode.pixel_P[2] = AT24C02_PageData[5][3]; Mode.pixel_R[3] = AT24C02_PageData[5][4]; Mode.pixel_G[3] = AT24C02_PageData[5][5]; Mode.pixel_B[3] = AT24C02_PageData[5][6]; Mode.pixel_W[3] = AT24C02_PageData[5][7]; Mode.pixel_Y[3] = AT24C02_PageData[6][0]; Mode.pixel_P[3] = AT24C02_PageData[6][1]; Mode.pixel_R[4] = AT24C02_PageData[6][2]; Mode.pixel_G[4] = AT24C02_PageData[6][3]; Mode.pixel_B[4] = AT24C02_PageData[6][4]; Mode.pixel_W[4] = AT24C02_PageData[6][5]; Mode.pixel_Y[4] = AT24C02_PageData[6][6]; Mode.pixel_P[4] = AT24C02_PageData[6][7]; Mode.pixel_R[5] = AT24C02_PageData[7][0]; Mode.pixel_G[5] = AT24C02_PageData[7][1]; Mode.pixel_B[5] = AT24C02_PageData[7][2]; Mode.pixel_W[5] = AT24C02_PageData[7][3]; Mode.pixel_Y[5] = AT24C02_PageData[7][4]; Mode.pixel_P[5] = AT24C02_PageData[7][5]; Mode.pixel_R[6] = AT24C02_PageData[7][6]; Mode.pixel_G[6] = AT24C02_PageData[7][7]; Mode.pixel_B[6] = AT24C02_PageData[8][0]; Mode.pixel_W[6] = AT24C02_PageData[8][1]; Mode.pixel_Y[6] = AT24C02_PageData[8][2]; Mode.pixel_P[6] = AT24C02_PageData[8][3]; Mode.pixel_R[7] = AT24C02_PageData[8][4]; Mode.pixel_G[7] = AT24C02_PageData[8][5]; Mode.pixel_B[7] = AT24C02_PageData[8][6]; Mode.pixel_W[7] = AT24C02_PageData[8][7]; Mode.pixel_Y[7] = AT24C02_PageData[9][0]; Mode.pixel_P[7] = AT24C02_PageData[9][1]; Mode.pixel_R[8] = AT24C02_PageData[9][2]; Mode.pixel_G[8] = AT24C02_PageData[9][3]; Mode.pixel_B[8] = AT24C02_PageData[9][4]; Mode.pixel_W[8] = AT24C02_PageData[9][5]; Mode.pixel_Y[8] = AT24C02_PageData[9][6]; Mode.pixel_P[8] = AT24C02_PageData[9][7]; Mode.pixel_R[9] = AT24C02_PageData[10][0]; Mode.pixel_G[9] = AT24C02_PageData[10][1]; Mode.pixel_B[9] = AT24C02_PageData[10][2]; Mode.pixel_W[9] = AT24C02_PageData[10][3]; Mode.pixel_Y[9] = AT24C02_PageData[10][4]; Mode.pixel_P[9] = AT24C02_PageData[10][5]; Mode.pixel_R[10] = AT24C02_PageData[10][6]; Mode.pixel_G[10] = AT24C02_PageData[10][7]; Mode.pixel_B[10] = AT24C02_PageData[11][0]; Mode.pixel_W[10] = AT24C02_PageData[11][1]; Mode.pixel_Y[10] = AT24C02_PageData[11][2]; Mode.pixel_P[10] = AT24C02_PageData[11][3]; Mode.pixel_R[11] = AT24C02_PageData[11][4]; Mode.pixel_G[11] = AT24C02_PageData[11][5]; Mode.pixel_B[11] = AT24C02_PageData[11][6]; Mode.pixel_W[11] = AT24C02_PageData[11][7]; Mode.pixel_Y[11] = AT24C02_PageData[12][0]; Mode.pixel_P[11] = AT24C02_PageData[12][1]; Mode.pixel_R[12] = AT24C02_PageData[12][2]; Mode.pixel_G[12] = AT24C02_PageData[12][3]; Mode.pixel_B[12] = AT24C02_PageData[12][4]; Mode.pixel_W[12] = AT24C02_PageData[12][5]; Mode.pixel_Y[12] = AT24C02_PageData[12][6]; Mode.pixel_P[12] = AT24C02_PageData[12][7]; Mode.pixel_R[13] = AT24C02_PageData[13][0]; Mode.pixel_G[13] = AT24C02_PageData[13][1]; Mode.pixel_B[13] = AT24C02_PageData[13][2]; Mode.pixel_W[13] = AT24C02_PageData[13][3]; Mode.pixel_Y[13] = AT24C02_PageData[13][4]; Mode.pixel_P[13] = AT24C02_PageData[13][5]; Mode.pixel_R[14] = AT24C02_PageData[13][6]; Mode.pixel_G[14] = AT24C02_PageData[13][7]; Mode.pixel_B[14] = AT24C02_PageData[14][0]; Mode.pixel_W[14] = AT24C02_PageData[14][1]; Mode.pixel_Y[14] = AT24C02_PageData[14][2]; Mode.pixel_P[14] = AT24C02_PageData[14][3]; Mode.pixel_R[15] = AT24C02_PageData[14][4]; Mode.pixel_G[15] = AT24C02_PageData[14][5]; Mode.pixel_B[15] = AT24C02_PageData[14][6]; Mode.pixel_W[15] = AT24C02_PageData[14][7]; Mode.pixel_Y[15] = AT24C02_PageData[15][0]; Mode.pixel_P[15] = AT24C02_PageData[15][1]; Mode.pixel_R[16] = AT24C02_PageData[15][2]; Mode.pixel_G[16] = AT24C02_PageData[15][3]; Mode.pixel_B[16] = AT24C02_PageData[15][4]; Mode.pixel_W[16] = AT24C02_PageData[15][5]; Mode.pixel_Y[16] = AT24C02_PageData[15][6]; Mode.pixel_P[16] = AT24C02_PageData[15][7]; Mode.pixel_R[17] = AT24C02_PageData[16][0]; Mode.pixel_G[17] = AT24C02_PageData[16][1]; Mode.pixel_B[17] = AT24C02_PageData[16][2]; Mode.pixel_W[17] = AT24C02_PageData[16][3]; Mode.pixel_Y[17] = AT24C02_PageData[16][4]; Mode.pixel_P[17] = AT24C02_PageData[16][5]; Mode.pixel_R[18] = AT24C02_PageData[16][6]; Mode.pixel_G[18] = AT24C02_PageData[16][7]; Mode.pixel_B[18] = AT24C02_PageData[17][0]; Mode.pixel_W[18] = AT24C02_PageData[17][1]; Mode.pixel_Y[18] = AT24C02_PageData[17][2]; Mode.pixel_P[18] = AT24C02_PageData[17][3]; Mode.auto_dimmer = AT24C02_PageData[17][4]; Mode.auto_speed = AT24C02_PageData[17][5]; Mode.Prog = AT24C02_PageData[17][6]; Mode.macro_dimmer = AT24C02_PageData[17][7]; Mode.macro_strobe = AT24C02_PageData[18][0]; Mode.macro = AT24C02_PageData[18][1]; Mode.user_dimmer = AT24C02_PageData[18][2]; Mode.user_strobe = AT24C02_PageData[18][3]; Mode.user = AT24C02_PageData[18][4]; Mode.user_R[0] = AT24C02_PageData[18][5]; Mode.user_G[0] = AT24C02_PageData[18][6]; Mode.user_B[0] = AT24C02_PageData[18][7]; Mode.user_W[0] = AT24C02_PageData[19][0]; Mode.user_Y[0] = AT24C02_PageData[19][1]; Mode.user_P[0] = AT24C02_PageData[19][2]; Mode.user_R[1] = AT24C02_PageData[19][3]; Mode.user_G[1] = AT24C02_PageData[19][4]; Mode.user_B[1] = AT24C02_PageData[19][5]; Mode.user_W[1] = AT24C02_PageData[19][6]; Mode.user_Y[1] = AT24C02_PageData[19][7]; Mode.user_P[1] = AT24C02_PageData[20][0]; Mode.user_R[2] = AT24C02_PageData[20][1]; Mode.user_G[2] = AT24C02_PageData[20][2]; Mode.user_B[2] = AT24C02_PageData[20][3]; Mode.user_W[2] = AT24C02_PageData[20][4]; Mode.user_Y[2] = AT24C02_PageData[20][5]; Mode.user_P[2] = AT24C02_PageData[20][6]; Info.curev = AT24C02_PageData[20][7]; Info.curve = AT24C02_PageData[21][0]; AT24C02_PageData[21][1] = 0; } static void Board_Peripheral_Check() { uint8_t err = 0; uint8_t errString[3][17] = {0}; if(AT24C02_Check() == 0) { snprintf((char *)&errString[err][0], 16, "%01d.EEPROM Err! ", err + 1); err++; } if(GlobalVal.tempADC > 2595 || GlobalVal.tempADC < 296) { snprintf((char *)&errString[err][0], 16, "%01d.Temp Err! ", err + 1); err++; } if(err != 0) { for(uint8_t i = 0; i < err; i++) { OLED_ShowString(0, i * 16, &errString[i][0], 16, 1); } OLED_Refresh(); for(u16 j=0;j<3000;j++) { for(u16 i=0;i<500;i++) { KeyValue = Get_KeyValue(); if(KeyValue & KEY_DOWN) return; } } } } static void Board_PowerOn_Init() { AT24C02_ReadParameter(); Board_Parameter_Init(); if(AT24C02_PageData[0][0] != AT24C02_FLAG) { Board_Parameter_updata(); for(GlobalVal.saveParameter_Num = 1; GlobalVal.saveParameter_Num <= AT24C02_PAGENUM; GlobalVal.saveParameter_Num++) { AT24C02_WriteParameter(); } GlobalVal.saveParameter_Num = 0; } else { Board_Parameter_download(); } DMX.channel = Channel_List[DMX.chIndex]; } void Board_Init() { /* RCC使用st官方åˆ�å§‹åŒ? 72MHz */ RDM_Init(); NVIC_Config(); UCS2904_Init(); UCS_Updata(120, LED.Arrary); AT24C02_Init(); Board_PowerOn_Init(); OLED_Init(); Key_Init(); Temp_ADC_Init(); Board_Peripheral_Check(); //Check hardware //LPD_Init(); Sound_Init(); DMX512_Init(); TIM_Init(TIM1, 72, 2500); TIM_Init(TIM2, 72, 100); TIM_Init(TIM3, 72, 10000); OLED_DisplayTurn(Set.displayRev); OLED_Clear(); GUI_Init(); OLED_Refresh(); SysTick_Init(); //SysTickåˆ�å§‹åŒ? 1ms中断一æ¬? } 帮我把y和p的数据删掉,并把数组序号填好
最新发布
10-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值