Hallo ihr Bit Manipulierer, aktuell habe ich ein kleines ESP32C3 Super Mini Board vor mir liegen. Vorher habe ich überwiegend etwas mit den AVR 8 bitlern zu tun gehabt. Nun möchte ich ohne das ganze Arduino Krams mal versuchen einen I/O Pin zu nutzen.. Klappt leider noch nicht.. Es könnte sein das ich das Datenblatt falsch deute oder mein Code einfach nur falsch ist?! Könnte mal jemand von euch Experten bitte drüber schauen..
1 | /*
|
2 | GPIO_FUNCn_OUT_SEL Selection control for GPIO output n. If a value Y (0<=Y<128) is written to this
|
3 | field, the peripheral output signal Y will be connected to GPIO output n. If a value 128 is written
|
4 | to this field, bit n of GPIO_OUT_REG and GPIO_ENABLE_REG will be selected as the output value
|
5 | and output enable. (R/W)
|
6 | */
|
7 | volatile uint32_t *GPIO_Func_Out_Cnfg = (uint32_t*) (0x0554 + 4 * 8); |
8 | |
9 | /*
|
10 | GPIO_OUT_DATA_ORIG GPIO0 ~ 21 output value in simple GPIO output mode. The values of bit0
|
11 | ~ bit21 correspond to the output value of GPIO0 ~ GPIO21 respectively, and bit22 ~ bit25 are
|
12 | invalid. (R/W/SS)
|
13 | */
|
14 | volatile uint32_t *GPIO_Out_Reg = (uint32_t*)(0x0004); |
15 | |
16 | /*
|
17 | GPIO_ENABLE_DATA GPIO output enable register for GPIO0 ~ 21. Bit0 ~ bit21 are corresponding to
|
18 | GPIO0 ~ 21, and bit22 ~ bit25 are invalid. (R/W/SS)
|
19 | */
|
20 | volatile uint32_t *GPIO_Enable_Reg = (uint32_t*)(0x0020); |
21 | |
22 | void setup() { |
23 | |
24 | // special peripheral index
|
25 | *GPIO_Func_Out_Cnfg = 0x80; |
26 | |
27 | // set GPIO8
|
28 | *GPIO_Out_Reg &= ~1<<8u; |
29 | |
30 | // enable GPIO8
|
31 | *GPIO_Enable_Reg = 1<<8u; |
32 | |
33 | }
|
34 | |
35 | void loop() { |
36 | // put your main code here, to run repeatedly:
|
37 | |
38 | }
|