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;
|
||||
|
||||
#define In_Floating 0x4
|
||||
#define In_PullDown 0x101 //faire
|
||||
#define In_PullUp 0x102 //faire
|
||||
#define In_PullDown 0x7 //faire
|
||||
#define In_PullUp 0x8 //faire
|
||||
#define In_Analog 0x0
|
||||
#define Out_Ppull 0x2
|
||||
#define Out_OD 0x6
|
||||
|
|
|
@ -4,25 +4,65 @@ void MyGPIO_Init(MyGPIO_Struct_TypeDef * GPIOStructPtr) {
|
|||
if (GPIOStructPtr->GPIO_Pin >= 8) {
|
||||
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->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;
|
||||
}
|
||||
}
|
||||
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) {
|
||||
return ((GPIO->IDR & (0x1 << GPIO_Pin)) >> 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) {
|
||||
|
||||
GPIO->ODR &= (0x0 << GPIO_Pin);
|
||||
}
|
||||
|
||||
void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin) {
|
||||
|
|
|
@ -1,22 +1,33 @@
|
|||
#include "stm32f10x.h"
|
||||
#include "gpio.h"
|
||||
|
||||
int main(void) {
|
||||
MyGPIO_Struct_TypeDef * led2;
|
||||
MyGPIO_Struct_TypeDef * b1;
|
||||
|
||||
RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4);
|
||||
|
||||
GPIOA->CRL &= ~(0xF << (4 * 5));
|
||||
/*GPIOA->CRL &= ~(0xF << (4 * 5));
|
||||
GPIOA->CRL |= (0x3 << (4 * 5));
|
||||
GPIOA->ODR &= (0x0 << 5);
|
||||
|
||||
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
|
||||
{
|
||||
if (((GPIOC->IDR & (0x1 << 13)) >> 13) == 0x1) {
|
||||
GPIOA->ODR &= (0x0 << 5);
|
||||
if (MyGPIO_Read(GPIOC, 13) == 0x1) {
|
||||
MyGPIO_Reset(GPIOA, 5);
|
||||
}
|
||||
else {
|
||||
GPIOA->ODR |= (0x1 << 5);
|
||||
MyGPIO_Set(GPIOA, 5);
|
||||
}
|
||||
} while (1);
|
||||
}
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLKADS>25000000</CLKADS>
|
||||
<CLKADS>8000000</CLKADS>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
|
@ -378,7 +378,7 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>MesSources</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
@ -389,7 +389,7 @@
|
|||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Source\Principal.c</PathWithFileName>
|
||||
<PathWithFileName>.\src\Principal.c</PathWithFileName>
|
||||
<FilenameWithoutPath>Principal.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
|
@ -398,10 +398,22 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>MesDrivers</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<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>
|
||||
|
|
|
@ -386,12 +386,19 @@
|
|||
<File>
|
||||
<FileName>Principal.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\Source\Principal.c</FilePath>
|
||||
<FilePath>.\src\Principal.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>MesDrivers</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Drivers\src\gpio.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::CMSIS</GroupName>
|
||||
|
@ -734,7 +741,7 @@
|
|||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>.\Include</IncludePath>
|
||||
<IncludePath>..\Drivers\inc;.\inc</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
|
@ -781,12 +788,19 @@
|
|||
<File>
|
||||
<FileName>Principal.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\Source\Principal.c</FilePath>
|
||||
<FilePath>.\src\Principal.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>MesDrivers</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Drivers\src\gpio.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::CMSIS</GroupName>
|
||||
|
|
Loading…
Reference in a new issue