test gpio and access low level arm registers
Dependencies: libmDot mbed-rtos mbed
Diff: main.cpp
- Revision:
- 0:111cba7b0520
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu May 26 09:04:10 2016 +0000 @@ -0,0 +1,71 @@ +#include "mbed.h" +#include "rtos.h" +#include "mDot.h" + + +#define GPIO_PORT PA_0 + +RawSerial pc(PA_2,NC); + +// results: +// default pullup pulldown pullnone open drain +// battery + close 0.00 0.00 0.00 0.00 0.00 +// battery + open 1.55 3.01 0.01 drifting drifting +// mdk + open 0.00 0.00 0.00 0.00 0.00 +// mdk + close 3.30 3.21 2.26 3.12 3.30 +// +// conclusion: mdk has something connected to PA_0 + +// https://developer.mbed.org/users/n0tform3/code/HelloWorld_IKS01A1/docs/1c6281289d67/stm32f4xx_8h_source.html + + +void print_gpio_pa0_config(void) { + + pc.printf("MODER %x\r\n",GPIOA->MODER&0x3); + pc.printf("OTYPER %x\r\n",GPIOA->OTYPER&0x1); + pc.printf("OSPEEDR %x\r\n",GPIOA->OSPEEDR&0x3); + pc.printf("PUPDR %x\r\n",GPIOA->PUPDR&0x3); + pc.printf("IDR %x\r\n",GPIOA->IDR&0x1); + pc.printf("ODR %x\r\n",GPIOA->ODR&0x1); + pc.printf("BSRR %x\r\n",GPIOA->BSRR&0x1); + pc.printf("LCKR %x\r\n",GPIOA->LCKR&0x1); + pc.printf("AFR[0] %x\r\n",GPIOA->AFR[0]&0xf); +} + +main() { + + pc.baud(115200); + + pc.printf("Build: " __DATE__ ", " __TIME__"\r\n"); + + DigitalIn gpio_sensor(GPIO_PORT); + pc.printf("pin mode: default\r\n"); + print_gpio_pa0_config(); + wait(10); + + // uint32_t lock = GPIOA->LCKR; + // pc.printf("Read %x\r\n",lock); + + while(1) { + + gpio_sensor.mode(PullUp); + pc.printf("pin mode: pullup\r\n"); + print_gpio_pa0_config(); + wait(10); + + gpio_sensor.mode(PullDown); + pc.printf("pin mode: pulldown\r\n"); + print_gpio_pa0_config(); + wait(10); + + gpio_sensor.mode(PullNone); + pc.printf("pin mode: pullnone\r\n"); + print_gpio_pa0_config(); + wait(10); + + gpio_sensor.mode(OpenDrain); + pc.printf("pin mode: opendrain\r\n"); + print_gpio_pa0_config(); + wait(10); + } +} \ No newline at end of file