forked from trocache/RefKEIL
Avancement driver gpio
This commit is contained in:
parent
665c73122d
commit
ba6ec8e022
5 changed files with 99 additions and 22 deletions
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue