Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp
- Committer:
- jjantoine
- Date:
- 2018-12-12
- Revision:
- 4:a5b5809ee14f
- Parent:
- 3:7ae2366ce74c
- Child:
- 5:851e7afdc4fe
File content as of revision 4:a5b5809ee14f:
#include "mbed.h" Serial pc(USBTX, USBRX); // tx, rx DigitalIn mybutton(USER_BUTTON); DigitalOut myled(LED2); DigitalOut Porta0_7 (PA_0); DigitalOut Porta0_6 (PA_1); DigitalOut Porta0_5 (PA_4); DigitalOut Porta0_4 (PA_6); DigitalOut Porta0_3 (PA_7); DigitalOut Porta0_2 (PA_8); DigitalOut Porta0_1 (PA_9); DigitalOut Porta0_0 (PA_12); DigitalOut Porta1_7 (PB_0); DigitalOut Porta1_6 (PB_1); DigitalOut Porta1_5 (PB_3); DigitalOut Porta1_4 (PB_4); DigitalOut Porta1_3 (PB_5); DigitalOut Porta1_2 (PB_6); DigitalOut Porta1_1 (PB_7); DigitalOut Porta1_0 (PB_10); DigitalOut Porta2_7 (PC_0); DigitalOut Porta2_6 (PC_1); DigitalOut Porta2_5 (PC_2); DigitalOut Porta2_4 (PC_3); DigitalOut Porta2_3 (PC_5); DigitalOut Porta2_2 (PC_6); DigitalOut Porta2_1 (PC_7); DigitalOut Porta2_0 (PC_8); DigitalOut Porta3_7 (PA_13); DigitalOut Porta3_6 (PA_14); DigitalOut Porta3_5 (PA_15); DigitalOut Porta3_4 (PC_14); DigitalOut Porta3_3 (PC_15); DigitalOut Porta3_2 (PA_11); DigitalOut Porta3_1 (PB_12); DigitalOut Porta3_0 (PC_4); void TGP_SET_GPO_CMD(); void TGP_SET_GPO_ACK(char*, char*, char*, char*, char*); void GPIO_SET(char*,char*,char*,char*,char*,char*,char*,char*); int* charbit(char*,char*); int main() { while(1) { TGP_SET_GPO_CMD(); } } void TGP_SET_GPO_CMD() { unsigned int i; char UINT32_PacketSize [4]; char ENUM_Packet_ID; char UINT16_PacketCounter [2]; char UINT32_Timestamp [4]; char UINT32_Port0Value [4]; char UINT32_Port0Mask [4]; char UINT32_Port1Value [4]; char UINT32_Port1Mask [4]; char UINT32_Port2Value [4]; char UINT32_Port2Mask [4]; char UINT32_Port3Value [4]; char UINT32_Port3Mask [4]; char UINT32_CRC [4]; for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_PacketSize[i]); } pc.scanf("%c",&ENUM_Packet_ID); for(i=0; i<2; i++){ pc.scanf("%c",&UINT16_PacketCounter[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Timestamp[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Port0Value[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Port0Mask[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Port1Value[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Port1Mask[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Port2Value[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Port2Mask[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Port3Value[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_Port3Mask[i]); } for(i=0; i<4; i++){ pc.scanf("%c",&UINT32_CRC[i]); } TGP_SET_GPO_ACK(UINT32_PacketSize,&ENUM_Packet_ID,UINT16_PacketCounter,UINT32_Timestamp,UINT32_CRC); GPIO_SET(UINT32_Port0Value,UINT32_Port0Mask,UINT32_Port1Value,UINT32_Port1Mask,UINT32_Port2Value,UINT32_Port2Mask,UINT32_Port3Value,UINT32_Port3Mask); } void TGP_SET_GPO_ACK(char*A, char*B, char*C, char*D, char*E) { char UINT32_PacketSize [4]; char ENUM_Packet_ID; char UINT16_PacketCounter [2]; char UINT32_Timestamp [4]; char UINT32_CRC [4]; unsigned int i; for(i=0;i<4;i++) { UINT32_PacketSize[i] = A[i]; } ENUM_Packet_ID = *B; for(i=0;i<2;i++) { UINT16_PacketCounter[i] = C[i]; } for(i=0;i<4;i++) { UINT32_Timestamp[i] = D[i]; } for(i=0;i<4;i++) { UINT32_CRC[i] = E[i]; } for(i=0; i<4; i++){ pc.printf("%c",UINT32_PacketSize[i]); } pc.printf("%c",ENUM_Packet_ID); for(i=0; i<2; i++){ pc.printf("%c",UINT16_PacketCounter[i]); } for(i=0; i<4; i++){ pc.printf("%c",UINT32_Timestamp[i]); } for(i=0; i<4; i++){ pc.printf("%c",UINT32_CRC[i]); } } void GPIO_SET(char*A,char*B,char*C,char*D,char*E,char*F,char*G,char*H) { unsigned int i,btts; btts=0; char UINT32_Port0Value [4]; char UINT32_Port0Mask [4]; char UINT32_Port1Value [4]; char UINT32_Port1Mask [4]; char UINT32_Port2Value [4]; char UINT32_Port2Mask [4]; char UINT32_Port3Value [4]; char UINT32_Port3Mask [4]; int* porta0; int* porta1; int* porta2; int* porta3; int bit0[32]; int bit1[32]; int bit2[32]; int bit3[32]; for(i=0;i<4;i++) { UINT32_Port0Value[i] = A[i]; } for(i=0;i<4;i++) { UINT32_Port0Mask[i] = B[i]; } for(i=0;i<4;i++) { UINT32_Port1Value[i] = C[i]; } for(i=0;i<4;i++) { UINT32_Port1Mask[i] = D[i]; } for(i=0;i<4;i++) { UINT32_Port2Value[i] = E[i]; } for(i=0;i<4;i++) { UINT32_Port2Mask[i] = F[i]; } for(i=0;i<4;i++) { UINT32_Port3Value[i] = G[i]; } for(i=0;i<4;i++) { UINT32_Port3Mask[i] = H[i]; } porta0 = charbit(UINT32_Port0Value,UINT32_Port0Mask); for(i=0;i<32;i++) { bit0[i]=porta0[i]; } porta1 = charbit(UINT32_Port1Value,UINT32_Port1Mask); for(i=0;i<32;i++) { bit1[i]=porta1[i]; } porta2 = charbit(UINT32_Port2Value,UINT32_Port2Mask); for(i=0;i<32;i++) { bit2[i]=porta2[i]; } porta3 = charbit(UINT32_Port3Value,UINT32_Port3Mask); for(i=0;i<32;i++) { bit3[i]=porta3[i]; } while(1) { myled = mybutton; if(mybutton == 0 & btts ==0) { Porta0_7 = bit0[0]; Porta0_6 = bit0[1]; Porta0_5 = bit0[2]; Porta0_4 = bit0[3]; Porta0_3 = bit0[4]; Porta0_2 = bit0[5]; Porta0_1 = bit0[6]; Porta0_0 = bit0[7]; Porta1_7 = bit1[0]; Porta1_6 = bit1[1]; Porta1_5 = bit1[2]; Porta1_4 = bit1[3]; Porta1_3 = bit1[4]; Porta1_2 = bit1[5]; Porta1_1 = bit1[6]; Porta1_0 = bit1[7]; Porta2_7 = bit2[0]; Porta2_6 = bit2[1]; Porta2_5 = bit2[2]; Porta2_4 = bit2[3]; Porta2_3 = bit2[4]; Porta2_2 = bit2[5]; Porta2_1 = bit2[6]; Porta2_0 = bit2[7]; Porta3_7 = bit3[0]; Porta3_6 = bit3[1]; Porta3_5 = bit3[2]; Porta3_4 = bit3[3]; Porta3_3 = bit3[4]; Porta3_2 = bit3[5]; Porta3_1 = bit3[6]; Porta3_0 = bit3[7]; btts = 1; } else if (mybutton == 1 & btts == 1) { Porta0_7 = bit0[8]; Porta0_6 = bit0[9]; Porta0_5 = bit0[10]; Porta0_4 = bit0[11]; Porta0_3 = bit0[12]; Porta0_2 = bit0[13]; Porta0_1 = bit0[14]; Porta0_0 = bit0[15]; Porta1_7 = bit1[8]; Porta1_6 = bit1[9]; Porta1_5 = bit1[10]; Porta1_4 = bit1[11]; Porta1_3 = bit1[12]; Porta1_2 = bit1[13]; Porta1_1 = bit1[14]; Porta1_0 = bit1[15]; Porta2_7 = bit2[8]; Porta2_6 = bit2[9]; Porta2_5 = bit2[10]; Porta2_4 = bit2[11]; Porta2_3 = bit2[12]; Porta2_2 = bit2[13]; Porta2_1 = bit2[14]; Porta2_0 = bit2[15]; Porta3_7 = bit3[8]; Porta3_6 = bit3[9]; Porta3_5 = bit3[10]; Porta3_4 = bit3[11]; Porta3_3 = bit3[12]; Porta3_2 = bit3[13]; Porta3_1 = bit3[14]; Porta3_0 = bit3[15]; btts = 2; } else if (mybutton == 0 & btts == 2) { Porta0_7 = bit0[16]; Porta0_6 = bit0[17]; Porta0_5 = bit0[18]; Porta0_4 = bit0[19]; Porta0_3 = bit0[20]; Porta0_2 = bit0[21]; Porta0_1 = bit0[22]; Porta0_0 = bit0[23]; Porta1_7 = bit1[16]; Porta1_6 = bit1[17]; Porta1_5 = bit1[18]; Porta1_4 = bit1[19]; Porta1_3 = bit1[20]; Porta1_2 = bit1[21]; Porta1_1 = bit1[22]; Porta1_0 = bit1[23]; Porta2_7 = bit2[16]; Porta2_6 = bit2[17]; Porta2_5 = bit2[18]; Porta2_4 = bit2[19]; Porta2_3 = bit2[20]; Porta2_2 = bit2[21]; Porta2_1 = bit2[22]; Porta2_0 = bit2[23]; Porta3_7 = bit3[16]; Porta3_6 = bit3[17]; Porta3_5 = bit3[18]; Porta3_4 = bit3[19]; Porta3_3 = bit3[20]; Porta3_2 = bit3[21]; Porta3_1 = bit3[22]; Porta3_0 = bit3[23]; btts = 3; } else if (mybutton == 1 & btts == 3) { Porta0_7 = bit0[24]; Porta0_6 = bit0[25]; Porta0_5 = bit0[26]; Porta0_4 = bit0[27]; Porta0_3 = bit0[28]; Porta0_2 = bit0[29]; Porta0_1 = bit0[30]; Porta0_0 = bit0[31]; Porta1_7 = bit1[24]; Porta1_6 = bit1[25]; Porta1_5 = bit1[26]; Porta1_4 = bit1[27]; Porta1_3 = bit1[28]; Porta1_2 = bit1[29]; Porta1_1 = bit1[30]; Porta1_0 = bit1[31]; Porta2_7 = bit2[24]; Porta2_6 = bit2[25]; Porta2_5 = bit2[26]; Porta2_4 = bit2[27]; Porta2_3 = bit2[28]; Porta2_2 = bit2[29]; Porta2_1 = bit2[30]; Porta2_0 = bit2[31]; Porta3_7 = bit3[24]; Porta3_6 = bit3[25]; Porta3_5 = bit3[26]; Porta3_4 = bit3[27]; Porta3_3 = bit3[28]; Porta3_2 = bit3[29]; Porta3_1 = bit3[30]; Porta3_0 = bit3[31]; btts = 4; } else if (mybutton == 0 & btts == 4) { break; } } } int* charbit(char*c,char*d) { int msb1[32]; int msb2[32]; int msb3[32]; int i; char a[4]; char b[4]; for(i=0;i<4;i++) { a[i] = c[i]; } for(i=0;i<4;i++) { b[i] = d[i]; } for (i=0;i<8;i++) { msb1[i] = ( a[0] & 0x80 ) != 0x00; a[0]=a[0]<<1; } for (i=8;i<16;i++) { msb1[i] = ( a[1] & 0x80 ) != 0x00; a[1]=a[1]<<1; } for (i=16;i<24;i++) { msb1[i] = ( a[2] & 0x80 ) != 0x00; a[2]=a[2]<<1; } for (i=24;i<32;i++) { msb1[i] = ( a[3] & 0x80 ) != 0x00; a[3]=a[3]<<1; } for (i=0;i<8;i++) { msb2[i] = ( b[0] & 0x80 ) != 0x00; b[0]=b[0]<<1; } for (i=8;i<16;i++) { msb2[i] = ( b[1] & 0x80 ) != 0x00; b[1]=b[1]<<1; } for (i=16;i<24;i++) { msb2[i] = ( b[2] & 0x80 ) != 0x00; b[2]=b[2]<<1; } for (i=24;i<32;i++) { msb2[i] = ( b[3] & 0x80 ) != 0x00; b[3]=b[3]<<1; } for (i=0;i<32;i++) { msb3[i] = msb1[i] & msb2[i]; } return &msb3[0]; }