임베디드/고추건조기

GPIO제어

twoweeks-within 2024. 11. 19. 23:54

GPIO output level 
: High : 3.3 v , Low 0v 
 > HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 1)

enum 
reset = 0u ;
set;   
//set 은  1 
//reset이 1이면 > set =2

GPOI mode 
push pull : s/w // mcu 3.3v를 제어
open drain : s/w :short > GND
                      :open > floating 

floating 
떠다니는 상태
 >전류가 흐를지 말지 모름
>>
pull-up 저항 (R) : 위쪽 5v 로 묶여짐 // 저항 > 전류 i 가 생김
pull -down 저항 : 저항을 그라운드쪽에 > s/w 제어 전까진 0
>
pull - up : 위로 끌어 당기다
pull - down : 아래로 끌어 당기다

일반적으로 풀업을 많이 사용 : 3.3v 상태라 노이즈에 강함
풀다운은 0v 상태라 노이즈에 충격이 많이감

현재 보드에서의 led 
3.3v -> pc13 으로 흐름
 >pc13 : 0 (gnd) 가 되어야함
>>
if(!HAL_GPIO_ReadPin(GPIO_SW_GPIO_Port, GPIO_SW_Pin)){ 
  HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 0);

Maximum output speed 
 > GPIO 를 High > Low > High 전환 speed
> GPIO > I2c, spI 통신 

PA0   < S/W  <   GND
> PA0 을 풀업으로 묶어야 S/W ON, OFF 로 제어가능

assert_param : 아무것도 안함. //unused
원래는 디버깅 메세지 출력하기 위한것

 


SET_BIT(REG, BIT)     ((REG) |= (BIT))

__HAL_RCC_GPIOC_CLK_ENABLE()   SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPCEN)
// GPIO 포터 클럭 enable                      
    RCC->APB2ENR =  *(0x40021018)
    RCC_APB2ENR_IOPCEN  =16 // 0x1UL << RCC_APB2ENR_IOPCEN_Pos (4) 
>> *(0x40021018) |= 16

클럭
기준점, 심장, 기점
외부클럭, 내부클럭이 있음
외부클럭 > 크리스탈 

기준시작점 8M/s 
 > 장치마다 필요clock 이 다 다름
bus형 방식 : 하나의 버스(통로) 를 만들어서 abcde 를 연결
빠른애들 , 느린애들 있으니,, 2개로 나눔
AHB system BUS , APB

GPIO_LED_GPIO_Port  0x40011000 
GPIO_LED_Pin  8192(0x2000) 10 0000 0000 0000 (13번 // PC13) 
  //레퍼런스 메뉴얼 :  BS13 : 1 //Set the corresponding ODRx bit
GPIO_PIN_SET decimal 1 (10진법)

typedef struct
{
  __IO uint32_t CRL;  //0x40011000 
  __IO uint32_t CRH; // 0x40011004
  __IO uint32_t IDR;  //0x40011008
  __IO uint32_t ODR; //0x4001100C
  __IO uint32_t BSRR; //0x40011010
  __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;

GPIOx->BSRR = *(0x40011010)

HIGH :
GPIOx->BSRR = GPIO_Pin;
 *(0x40011010) = 8192
LOW
GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;
  *(0x40011010) = 13<<16 == 29번핀(RESET) on

'임베디드 > 고추건조기' 카테고리의 다른 글

데이터 시트 보는법  (1) 2024.11.23
GPIO 마무리, 회로도 보기  (0) 2024.11.21
GPIO 탐구  (0) 2024.11.21
ACR 레퍼런스 메뉴얼  (1) 2024.11.16
HAL_Init();  (1) 2024.11.16