2021-04-03 C语言、EDA,单片机代码自动转换更清楚。

GPIOB->BSRR //bit3变1其他不变

        GPIOB->BSRR //bit20变0其他不变

        GPIOB->BSRR //bit5变0其他不变

        GPIOB->BSRR //bit12变1其他不变

        GPIOB->BSRR //bit4变1其他不变


        GPIOB->ODR = //将0101_1010_0011_1011化为16进制

        GPIOB->ODR = //将0010_1000化为16进制

变成:

GPIOB->BSRR |= (1<<3); //bit3变1其他不变

        GPIOB->BSRR  &= (~(1<<20)); //bit20变0其他不变

        GPIOB->BSRR  &= (~(1<<5)); //bit5变0其他不变

        GPIOB->BSRR  |= (1<<12); //bit12变1其他不变

        GPIOB->BSRR  |= (1<<4); //bit4变1其他不变


        GPIOB->ODR = 0x5A3B;  // 之前的数据是 0101_1010_0011_1011

        GPIOB->ODR = 0x28;  // 之前的数据是 0010_1000


cat USER/main.mother.c \

  | sed 's/\/\/bit\(.*\)变1其他不变/ |= (1<<\1); \/\/bit\1变1其他不变/g' \

  | sed 's/\/\/bit\(.*\)变0其他不变/ \&= (~(1<<\1)); \/\/bit\1变0其他不变/g' \

  > USER/main.c

echo hi | sed '1d' > ztmp


cat USER/main.mother.c | grep 化为 | sed 's/.*将\(.*\)化.*/\1/g' \

  | xargs -i bash -c "echo {} | tr '_' '\n' | sed 's/\(.\)/\1 /g' | awk '{print 8*\$1+4*\$2+2*\$3+1*\$4}' | sed 's/^/ obase=16; ibase=10;/g'  | bc | tr '\n' ' ' | sed 's/ //g' | sed 's/^/0x/g' ; echo {} | sed 's/^/;  \/\/ 之前的数据是 /g' ;  "  >> ztmp


cat ztmp |sed 's/\//@/g' | xargs -i sed '0,/..将.*化为16.*/{s/..将.*化为16.*/{}/1}' -i USER/main.c

sed -i 's/@@/\/\//g' USER/main.c

你可能感兴趣的:(2021-04-03 C语言、EDA,单片机代码自动转换更清楚。)