test gpio and access low level arm registers
Dependencies: libmDot mbed-rtos mbed
main.cpp@0:111cba7b0520, 2016-05-26 (annotated)
- Committer:
- boddeke
- Date:
- Thu May 26 09:04:10 2016 +0000
- Revision:
- 0:111cba7b0520
low level register access
Who changed what in which revision?
User | Revision | Line number | New 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 | } |