Описание библиотеки микросхемы 5023ВС016 процессора "Спутник"
gpio.c
См. документацию.
1 
29 #include "gpio.h"
30 
31 
42 void GPIO_WriteDirBit(GPIO_T *pGPIO, uint8_t Pin_number, bool Dir)
43 {
44  if (Dir)
45  {
46  pGPIO->OUTENSET = (1UL << Pin_number);
47  }
48  else
49  {
50  pGPIO->OUTENCLR = (1UL << Pin_number);
51  }
52 }
53 
64 void GPIO_SetDir(GPIO_T *pGPIO, uint32_t bitVal, bool dir)
65 {
66  if (dir)
67  {
68  pGPIO->OUTENSET |= bitVal;
69  }
70  else
71  {
72  pGPIO->OUTENCLR |= bitVal;
73  }
74 }
75 
88 void GPIO_SetAltFunc(GPIO_T *pGPIO, uint16_t Pin_number, bool AltSet)
89 {
90  if(AltSet)
91  {
92  pGPIO->ALTFUNCSET |= (1UL << Pin_number);
93  }
94  else
95  {
96  pGPIO->ALTFUNCCLR |= (1UL << Pin_number);
97  }
98 }
99 
100 
108 void GPIO_WritePort(GPIO_T *pGPIO, uint16_t Pin_number, uint16_t val)
109 {
110  if(Pin_number & 0x00FF)
111  {
112  pGPIO->LB_MASKED[Pin_number & 0x00FF] = val;
113  }
114  if((Pin_number & 0xFF00)>>8)
115  {
116  pGPIO->UB_MASKED[(Pin_number & 0xFF00)>>8] = val;
117  }
118 }
119 
130 void GPIO_WritePortBit(GPIO_T *pGPIO, uint8_t pin, bool val)
131 {
132  if(pin<8)
133  {
134  pGPIO->LB_MASKED[1 << pin] = val << pin;
135  }
136  else
137  {
138  pGPIO->UB_MASKED[(1 << pin)>>8] = (val << pin);
139  }
140 }
141 
147 uint32_t GPIOOUT_ReadPort(GPIO_T *pGPIO)
148 {
149  //return pGPIO->UB_MASKED[255]|pGPIO->LB_MASKED[255];
150  return pGPIO->DATAOUT;
151 }
152 
158 uint32_t GPIOIN_ReadPort(GPIO_T *pGPIO)
159 {
160  return pGPIO->DATA;
161 }
162 
170 bool GPIOOUT_ReadPortBit(GPIO_T *pGPIO, uint8_t pin)
171 {
172  return (bool)(((pGPIO->DATAOUT)&(1<<pin))>>pin);
173 }
174 
182 bool GPIOIN_ReadPortBit(GPIO_T *pGPIO, uint8_t pin)
183 {
184  return (bool)(((pGPIO->DATA)&(1<<pin))>>pin);
185 }
186 
194 bool GPIO_ReadDirBit(GPIO_T *pGPIO, uint8_t pin)
195 {
196  return (bool) (((pGPIO->OUTENSET) >> pin) & 1);
197 }
198 
204 uint32_t GPIO_GetDir(GPIO_T *pGPIO)
205 {
206  return pGPIO->OUTENSET;
207 }
208 
216 uint32_t GPIO_GetAltFunc(GPIO_T *pGPIO)
217 {
218  return pGPIO->ALTFUNCSET;
219 }
220 
221 
222 
235 void GPIO_IntConfig(GPIO_T *pGPIO, uint32_t Pin_number, GPIOPINT_MODE_T IntMode)
236 {
237  switch(IntMode)
238  {
240  pGPIO->INTTYPESET = Pin_number;
241  pGPIO->INTPOLSET = Pin_number;
242  break;
243  case GPIOPINT_FRONT_LOW:
244  pGPIO->INTTYPESET = Pin_number;
245  pGPIO->INTPOLCLR = Pin_number;
246  break;
248  pGPIO->INTTYPECLR = Pin_number;
249  pGPIO->INTPOLSET = Pin_number;
250  break;
252  pGPIO->INTTYPECLR = Pin_number;
253  pGPIO->INTPOLCLR = Pin_number;
254  break;
255  default:
256  break;
257  }
258 }
259 
265 uint32_t GPIO_IntGetStatus(GPIO_T *pGPIO)
266 {
267  return pGPIO->INTSTATUSCLEAR;
268 }
269 
277 {
278  return (GPIOPINT_MODE_T)(((((pGPIO->INTTYPESET)&(1<<pin))>>pin)<<1) | ((pGPIO->INTPOLSET&(1<<pin))>>pin));
279 }
280 
281 
void GPIO_WriteDirBit(GPIO_T *pGPIO, uint8_t Pin_number, bool Dir)
Сконфигурировать вывод порта GPIO.
Definition: gpio.c:42
enum GPIOPINT_MODE GPIOPINT_MODE_T
Тип - профиль для установки типа и полярности события прерывания.
GPIOPINT_MODE_T GPIO_GetIntConfigPin(GPIO_T *pGPIO, uint8_t pin)
Взять текущий профиль прерывания для вывода
Definition: gpio.c:276
Структура для доступа к регистрам GPIO.
Definition: gpio.h:37
__RW uint32_t ALTFUNCCLR
Definition: gpio.h:45
__RW uint32_t INTTYPESET
Definition: gpio.h:48
__RW uint32_t OUTENCLR
Definition: gpio.h:43
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с аппаратным модулем G...
uint32_t GPIO_GetAltFunc(GPIO_T *pGPIO)
Считать установленный режим, GPIO или альтернативная функция на порте
Definition: gpio.c:216
void GPIO_WritePort(GPIO_T *pGPIO, uint16_t Pin_number, uint16_t val)
Запись данных в порт GPIO.
Definition: gpio.c:108
bool GPIOOUT_ReadPortBit(GPIO_T *pGPIO, uint8_t pin)
Считать состояние вывода сконфигурированого на выход
Definition: gpio.c:170
uint32_t GPIOOUT_ReadPort(GPIO_T *pGPIO)
Считать состояние выводов сконфигурированных на выход
Definition: gpio.c:147
__RW uint32_t OUTENSET
Definition: gpio.h:42
__RW uint32_t INTTYPECLR
Definition: gpio.h:49
void GPIO_IntConfig(GPIO_T *pGPIO, uint32_t Pin_number, GPIOPINT_MODE_T IntMode)
Настроить профиль прерывания.
Definition: gpio.c:235
void GPIO_SetDir(GPIO_T *pGPIO, uint32_t bitVal, bool dir)
Сконфигурировать выводы порта GPIO.
Definition: gpio.c:64
bool GPIOIN_ReadPortBit(GPIO_T *pGPIO, uint8_t pin)
Считать состояние вывода сконфигурированного на вход
Definition: gpio.c:182
__RW uint32_t ALTFUNCSET
Definition: gpio.h:44
void GPIO_WritePortBit(GPIO_T *pGPIO, uint8_t pin, bool val)
Установка состояния на выводе порта GPIO.
Definition: gpio.c:130
__RW uint32_t INTSTATUSCLEAR
Definition: gpio.h:52
uint32_t GPIO_IntGetStatus(GPIO_T *pGPIO)
Взять текущий статус прерываня для каждого вывода
Definition: gpio.c:265
uint32_t GPIO_GetDir(GPIO_T *pGPIO)
Считать конфигурацию выводов GPIO.
Definition: gpio.c:204
uint32_t val
Definition: mem_test.c:35
void GPIO_SetAltFunc(GPIO_T *pGPIO, uint16_t Pin_number, bool AltSet)
Установить режим GPIO или альтернативной функции.
Definition: gpio.c:88
__RW uint32_t LB_MASKED[256]
Definition: gpio.h:54
__RW uint32_t DATAOUT
Definition: gpio.h:40
bool GPIO_ReadDirBit(GPIO_T *pGPIO, uint8_t pin)
Считать конфигурацию вывода GPIO.
Definition: gpio.c:194
uint32_t GPIOIN_ReadPort(GPIO_T *pGPIO)
Считать состояние выводов сконфигурированных на вход
Definition: gpio.c:158
__RW uint32_t DATA
Definition: gpio.h:39
__RW uint32_t INTPOLCLR
Definition: gpio.h:51
__RW uint32_t UB_MASKED[256]
Definition: gpio.h:55
__RW uint32_t INTPOLSET
Definition: gpio.h:50