Changeset 374 for asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZA1XX/port_api.c
- Timestamp:
- Apr 5, 2019, 9:26:53 PM (5 years ago)
- Location:
- asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZA1XX
- Files:
-
- 1 added
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZA1XX/port_api.c
r373 r374 17 17 #include "pinmap.h" 18 18 #include "gpio_api.h" 19 #include "gpio_addrdefine.h" 19 20 20 21 PinName port_pin(PortName port, int pin_n) { 21 return (PinName)( 0);22 return (PinName)((port*0x10)+pin_n); 22 23 } 23 24 24 25 void port_init(port_t *obj, PortName port, int mask, PinDirection dir) { 26 uint32_t i; 27 25 28 obj->port = port; 26 29 obj->mask = mask; 27 30 obj->reg_dir = (volatile uint32_t *)PMSR(port); 31 obj->reg_out = (volatile uint32_t *)PORT(port); 32 obj->reg_in = (volatile uint32_t *)PPR(port); 33 obj->reg_buf = (volatile uint32_t *)PIBC(port); 28 34 // Do not use masking, because it prevents the use of the unmasked pins 29 35 // port_reg->FIOMASK = ~mask; 30 36 31 uint32_t i;32 37 // The function is set per pin: reuse gpio logic 33 38 for (i=0; i<32; i++) { … … 52 57 void port_dir(port_t *obj, PinDirection dir) { 53 58 switch (dir) { 54 case PIN_INPUT : *obj->reg_dir &= ~obj->mask; break; 55 case PIN_OUTPUT: *obj->reg_dir |= obj->mask; break; 59 case PIN_INPUT : *obj->reg_dir = (obj->mask << 16) | obj->mask; 60 *obj->reg_buf |= obj->mask; 61 break; 62 case PIN_OUTPUT: *obj->reg_dir = (obj->mask << 16) | ~obj->mask; 63 *obj->reg_buf &= ~obj->mask; 64 break; 65 default: 66 // do nothing 67 break; 56 68 } 57 69 } 58 70 59 71 void port_write(port_t *obj, int value) { 60 *obj->reg_out = ( *obj->reg_in & ~obj->mask) | (value & obj->mask);72 *obj->reg_out = (obj->mask << 16) | (value & obj->mask); 61 73 } 62 74
Note:
See TracChangeset
for help on using the changeset viewer.