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-11
- Revision:
- 0:399c0fbd595c
- Child:
- 1:c578c87f2be7
File content as of revision 0:399c0fbd595c:
#include "mbed.h"
Serial pc(USBTX, USBRX); // tx, rx
DigitalIn mybutton(USER_BUTTON);
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;
strcpy(UINT32_PacketSize,A);
ENUM_Packet_ID = B[0];
strcpy(UINT16_PacketCounter,C);
strcpy(UINT32_Timestamp,D);
strcpy(UINT32_CRC,E);
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];
strcpy(UINT32_Port0Value,A);
strcpy(UINT32_Port0Mask,B);
strcpy(UINT32_Port1Value,C);
strcpy(UINT32_Port1Mask,D);
strcpy(UINT32_Port2Value,E);
strcpy(UINT32_Port2Mask,F);
strcpy(UINT32_Port3Value,G);
strcpy(UINT32_Port3Mask,H);
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)
{
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 == 0 & 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 == 0 & 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];
strcpy(a,c);
strcpy(b,d);
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];
}