test gpio and access low level arm registers

Dependencies:   libmDot mbed-rtos mbed

Committer:
boddeke
Date:
Thu May 26 09:04:10 2016 +0000
Revision:
0:111cba7b0520
low level register access

Who changed what in which revision?

UserRevisionLine numberNew contents of line
boddeke 0:111cba7b0520 1 #include "mbed.h"
boddeke 0:111cba7b0520 2 #include "rtos.h"
boddeke 0:111cba7b0520 3 #include "mDot.h"
boddeke 0:111cba7b0520 4
boddeke 0:111cba7b0520 5
boddeke 0:111cba7b0520 6 #define GPIO_PORT PA_0
boddeke 0:111cba7b0520 7
boddeke 0:111cba7b0520 8 RawSerial pc(PA_2,NC);
boddeke 0:111cba7b0520 9
boddeke 0:111cba7b0520 10 // results:
boddeke 0:111cba7b0520 11 // default pullup pulldown pullnone open drain
boddeke 0:111cba7b0520 12 // battery + close 0.00 0.00 0.00 0.00 0.00
boddeke 0:111cba7b0520 13 // battery + open 1.55 3.01 0.01 drifting drifting
boddeke 0:111cba7b0520 14 // mdk + open 0.00 0.00 0.00 0.00 0.00
boddeke 0:111cba7b0520 15 // mdk + close 3.30 3.21 2.26 3.12 3.30
boddeke 0:111cba7b0520 16 //
boddeke 0:111cba7b0520 17 // conclusion: mdk has something connected to PA_0
boddeke 0:111cba7b0520 18
boddeke 0:111cba7b0520 19 // https://developer.mbed.org/users/n0tform3/code/HelloWorld_IKS01A1/docs/1c6281289d67/stm32f4xx_8h_source.html
boddeke 0:111cba7b0520 20
boddeke 0:111cba7b0520 21
boddeke 0:111cba7b0520 22 void print_gpio_pa0_config(void) {
boddeke 0:111cba7b0520 23
boddeke 0:111cba7b0520 24 pc.printf("MODER %x\r\n",GPIOA->MODER&0x3);
boddeke 0:111cba7b0520 25 pc.printf("OTYPER %x\r\n",GPIOA->OTYPER&0x1);
boddeke 0:111cba7b0520 26 pc.printf("OSPEEDR %x\r\n",GPIOA->OSPEEDR&0x3);
boddeke 0:111cba7b0520 27 pc.printf("PUPDR %x\r\n",GPIOA->PUPDR&0x3);
boddeke 0:111cba7b0520 28 pc.printf("IDR %x\r\n",GPIOA->IDR&0x1);
boddeke 0:111cba7b0520 29 pc.printf("ODR %x\r\n",GPIOA->ODR&0x1);
boddeke 0:111cba7b0520 30 pc.printf("BSRR %x\r\n",GPIOA->BSRR&0x1);
boddeke 0:111cba7b0520 31 pc.printf("LCKR %x\r\n",GPIOA->LCKR&0x1);
boddeke 0:111cba7b0520 32 pc.printf("AFR[0] %x\r\n",GPIOA->AFR[0]&0xf);
boddeke 0:111cba7b0520 33 }
boddeke 0:111cba7b0520 34
boddeke 0:111cba7b0520 35 main() {
boddeke 0:111cba7b0520 36
boddeke 0:111cba7b0520 37 pc.baud(115200);
boddeke 0:111cba7b0520 38
boddeke 0:111cba7b0520 39 pc.printf("Build: " __DATE__ ", " __TIME__"\r\n");
boddeke 0:111cba7b0520 40
boddeke 0:111cba7b0520 41 DigitalIn gpio_sensor(GPIO_PORT);
boddeke 0:111cba7b0520 42 pc.printf("pin mode: default\r\n");
boddeke 0:111cba7b0520 43 print_gpio_pa0_config();
boddeke 0:111cba7b0520 44 wait(10);
boddeke 0:111cba7b0520 45
boddeke 0:111cba7b0520 46 // uint32_t lock = GPIOA->LCKR;
boddeke 0:111cba7b0520 47 // pc.printf("Read %x\r\n",lock);
boddeke 0:111cba7b0520 48
boddeke 0:111cba7b0520 49 while(1) {
boddeke 0:111cba7b0520 50
boddeke 0:111cba7b0520 51 gpio_sensor.mode(PullUp);
boddeke 0:111cba7b0520 52 pc.printf("pin mode: pullup\r\n");
boddeke 0:111cba7b0520 53 print_gpio_pa0_config();
boddeke 0:111cba7b0520 54 wait(10);
boddeke 0:111cba7b0520 55
boddeke 0:111cba7b0520 56 gpio_sensor.mode(PullDown);
boddeke 0:111cba7b0520 57 pc.printf("pin mode: pulldown\r\n");
boddeke 0:111cba7b0520 58 print_gpio_pa0_config();
boddeke 0:111cba7b0520 59 wait(10);
boddeke 0:111cba7b0520 60
boddeke 0:111cba7b0520 61 gpio_sensor.mode(PullNone);
boddeke 0:111cba7b0520 62 pc.printf("pin mode: pullnone\r\n");
boddeke 0:111cba7b0520 63 print_gpio_pa0_config();
boddeke 0:111cba7b0520 64 wait(10);
boddeke 0:111cba7b0520 65
boddeke 0:111cba7b0520 66 gpio_sensor.mode(OpenDrain);
boddeke 0:111cba7b0520 67 pc.printf("pin mode: opendrain\r\n");
boddeke 0:111cba7b0520 68 print_gpio_pa0_config();
boddeke 0:111cba7b0520 69 wait(10);
boddeke 0:111cba7b0520 70 }
boddeke 0:111cba7b0520 71 }