Avancement driver gpio

This commit is contained in:
Alix Chagot 2023-03-17 12:17:44 +01:00
parent 665c73122d
commit ba6ec8e022
5 changed files with 99 additions and 22 deletions

View file

@ -9,8 +9,8 @@ typedef struct {
} MyGPIO_Struct_TypeDef; } MyGPIO_Struct_TypeDef;
#define In_Floating 0x4 #define In_Floating 0x4
#define In_PullDown 0x101 //faire #define In_PullDown 0x7 //faire
#define In_PullUp 0x102 //faire #define In_PullUp 0x8 //faire
#define In_Analog 0x0 #define In_Analog 0x0
#define Out_Ppull 0x2 #define Out_Ppull 0x2
#define Out_OD 0x6 #define Out_OD 0x6

View file

@ -4,25 +4,65 @@ void MyGPIO_Init(MyGPIO_Struct_TypeDef * GPIOStructPtr) {
if (GPIOStructPtr->GPIO_Pin >= 8) { if (GPIOStructPtr->GPIO_Pin >= 8) {
switch (GPIOStructPtr->GPIO_Conf) { switch (GPIOStructPtr->GPIO_Conf) {
case In_PullDown: case In_PullDown:
GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * (GPIOStructPtr->GPIO_Pin % 8)));
GPIOStructPtr->GPIO->CRH |= (0x8 << (4 * (GPIOStructPtr->GPIO_Pin % 8)));
GPIOStructPtr->GPIO->ODR &= (0x0 << GPIOStructPtr->GPIO_Pin);
break;
case In_PullUp: case In_PullUp:
GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * (GPIOStructPtr->GPIO_Pin % 8)));
GPIOStructPtr->GPIO->CRH |= (0x8 << (4 * (GPIOStructPtr->GPIO_Pin % 8)));
GPIOStructPtr->GPIO->ODR |= (0x1 << GPIOStructPtr->GPIO_Pin);
break;
case In_Floating:
case In_Analog:
case Out_Ppull:
case Out_OD:
case AltOut_Ppull:
case AltOut_OD:
GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * (GPIOStructPtr->GPIO_Pin % 8)));
GPIOStructPtr->GPIO->CRH |= (GPIOStructPtr->GPIO_Conf << (4 * (GPIOStructPtr->GPIO_Pin % 8)));
break; break;
} }
} }
else { else {
//suite switch (GPIOStructPtr->GPIO_Conf) {
} case In_PullDown:
GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * (GPIOStructPtr->GPIO_Pin % 8)));
GPIOStructPtr->GPIO->CRH |= (0x8 << (4 * (GPIOStructPtr->GPIO_Pin % 8)));
GPIOStructPtr->GPIO->ODR &= (0x0 << GPIOStructPtr->GPIO_Pin);
break;
case In_PullUp:
GPIOStructPtr->GPIO->CRL &= ~(0xF << (4 * (GPIOStructPtr->GPIO_Pin)));
GPIOStructPtr->GPIO->CRL |= (0x8 << (4 * (GPIOStructPtr->GPIO_Pin)));
GPIOStructPtr->GPIO->ODR |= (0x1 << GPIOStructPtr->GPIO_Pin);
break;
case In_Floating:
case In_Analog:
case Out_Ppull:
case Out_OD:
case AltOut_Ppull:
case AltOut_OD:
GPIOStructPtr->GPIO->CRL &= ~(0xF << (4 * (GPIOStructPtr->GPIO_Pin)));
GPIOStructPtr->GPIO->CRL |= (GPIOStructPtr->GPIO_Conf << (4 * (GPIOStructPtr->GPIO_Pin)));
break;
}
}
} }
int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin) { int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin) {
return ((GPIO->IDR & (0x1 << GPIO_Pin)) >> GPIO_Pin);
} }
void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin) { void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin) {
GPIO->ODR |= (0x1 << GPIO_Pin);
} }
void MyGPIO_Reset(GPIO_TypeDef * GPIO, char GPIO_Pin) { void MyGPIO_Reset(GPIO_TypeDef * GPIO, char GPIO_Pin) {
GPIO->ODR &= (0x0 << GPIO_Pin);
} }
void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin) { void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin) {

View file

@ -1,22 +1,33 @@
#include "stm32f10x.h" #include "stm32f10x.h"
#include "gpio.h"
int main(void) { int main(void) {
MyGPIO_Struct_TypeDef * led2;
MyGPIO_Struct_TypeDef * b1;
RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4); RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4);
GPIOA->CRL &= ~(0xF << (4 * 5)); /*GPIOA->CRL &= ~(0xF << (4 * 5));
GPIOA->CRL |= (0x3 << (4 * 5)); GPIOA->CRL |= (0x3 << (4 * 5));
GPIOA->ODR &= (0x0 << 5); GPIOA->ODR &= (0x0 << 5);
GPIOC->CRH &= ~(0xF << (4 * (13%8))); GPIOC->CRH &= ~(0xF << (4 * (13%8)));
GPIOC->CRH |= (0x8 << (4 * (13%8))); GPIOC->CRH |= (0x8 << (4 * (13%8)));*/
led2->GPIO = GPIOA;
led2->GPIO_Pin = 5;
led2->GPIO_Conf = Out_Ppull;
b1->GPIO = GPIOC;
b1->GPIO_Pin = 13;
b1->GPIO_Conf = In_PullUp;
do do
{ {
if (((GPIOC->IDR & (0x1 << 13)) >> 13) == 0x1) { if (MyGPIO_Read(GPIOC, 13) == 0x1) {
GPIOA->ODR &= (0x0 << 5); MyGPIO_Reset(GPIOA, 5);
} }
else { else {
GPIOA->ODR |= (0x1 << 5); MyGPIO_Set(GPIOA, 5);
} }
} while (1); } while (1);
} }

View file

@ -196,7 +196,7 @@
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<TargetOption> <TargetOption>
<CLKADS>25000000</CLKADS> <CLKADS>8000000</CLKADS>
<OPTTT> <OPTTT>
<gFlags>1</gFlags> <gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd> <BeepAtEnd>1</BeepAtEnd>
@ -378,7 +378,7 @@
<Group> <Group>
<GroupName>MesSources</GroupName> <GroupName>MesSources</GroupName>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -389,7 +389,7 @@
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\Source\Principal.c</PathWithFileName> <PathWithFileName>.\src\Principal.c</PathWithFileName>
<FilenameWithoutPath>Principal.c</FilenameWithoutPath> <FilenameWithoutPath>Principal.c</FilenameWithoutPath>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
@ -398,10 +398,22 @@
<Group> <Group>
<GroupName>MesDrivers</GroupName> <GroupName>MesDrivers</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Drivers\src\gpio.c</PathWithFileName>
<FilenameWithoutPath>gpio.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>

View file

@ -386,12 +386,19 @@
<File> <File>
<FileName>Principal.c</FileName> <FileName>Principal.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\Source\Principal.c</FilePath> <FilePath>.\src\Principal.c</FilePath>
</File> </File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
<GroupName>MesDrivers</GroupName> <GroupName>MesDrivers</GroupName>
<Files>
<File>
<FileName>gpio.c</FileName>
<FileType>1</FileType>
<FilePath>..\Drivers\src\gpio.c</FilePath>
</File>
</Files>
</Group> </Group>
<Group> <Group>
<GroupName>::CMSIS</GroupName> <GroupName>::CMSIS</GroupName>
@ -734,7 +741,7 @@
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
<Undefine></Undefine> <Undefine></Undefine>
<IncludePath>.\Include</IncludePath> <IncludePath>..\Drivers\inc;.\inc</IncludePath>
</VariousControls> </VariousControls>
</Cads> </Cads>
<Aads> <Aads>
@ -781,12 +788,19 @@
<File> <File>
<FileName>Principal.c</FileName> <FileName>Principal.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\Source\Principal.c</FilePath> <FilePath>.\src\Principal.c</FilePath>
</File> </File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
<GroupName>MesDrivers</GroupName> <GroupName>MesDrivers</GroupName>
<Files>
<File>
<FileName>gpio.c</FileName>
<FileType>1</FileType>
<FilePath>..\Drivers\src\gpio.c</FilePath>
</File>
</Files>
</Group> </Group>
<Group> <Group>
<GroupName>::CMSIS</GroupName> <GroupName>::CMSIS</GroupName>