Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.00 KB | None | 0 0
  1. #include "gpio.h"
  2. typedef struct {
  3.   uint32_t out;
  4.   uint32_t outset;
  5.   uint32_t outclr;
  6.   uint32_t in;
  7.   uint32_t dir;
  8.   uint32_t dirset;
  9.   uint32_t dirclr;
  10.   uint32_t latch;
  11.   uint32_t detectmode;
  12.   uint32_t reserved[118];
  13.   uint32_t PIN_CNF[31];
  14. } GPIO;
  15.  
  16. GPIO *gpio = (GPIO*) 0x50000504;
  17.  
  18. // Inputs:
  19. //  gpio_num - gpio number 0-31
  20. //  dir - gpio direction (INPUT, OUTPUT)
  21. void gpio_config(uint8_t gpio_num, gpio_direction_t dir) {
  22.  
  23.   if(dir == 1) {
  24.     gpio->dir |= (1 << gpio_num);
  25.   } else {
  26.     gpio->PIN_CNF[gpio_num] &= !(1<<gpio_num);
  27.   }
  28. }
  29.  
  30. // Set gpio_num high
  31. // Inputs:
  32. //  gpio_num - gpio number 0-31
  33. void gpio_set(uint8_t gpio_num) {
  34.   gpio->out &= !(1<<gpio_num);
  35. }
  36.  
  37. // Set gpio_num low
  38. // Inputs:
  39. //  gpio_num - gpio number 0-31
  40. void gpio_clear(uint8_t gpio_num) {
  41.   gpio->out |= (1 << gpio_num);
  42. }
  43.  
  44. // Inputs:
  45. //  gpio_num - gpio number 0-31
  46. bool gpio_read(uint8_t gpio_num) {
  47.     // should return pin state
  48.     return (gpio->in >> gpio_num) & 1;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement