META TOPICPARENT |
name="WebHome" |
Forth Calculator
Rows are input ports with pull up resistors and interrupts, columns are open drain output ports.
C0 C1 C2 C3 C4
+--------+--------+--------+--------+--------+
| Pi | 1/x | x^2 | LOG | LN |
| R/S | y^x | SQRT | 10^x | e^x | R0
| A | B | C | D | E |
| R/S | SL | SR | RL | RR |
+--------+--------+--------+--------+--------+
| STO | RCL | SIN | COS | TAN |
| CEIL | FLOOR | ASIN | ACOS | ATAN | R1
| STO | RCL | | | F |
| | SLn | SRn | | |
+--------+--------+--------+--------+--------+
| ENTER | SWAP | - | E | BS |
| DUP | ROT | ABS | F>S | CLx | R2
| ENTER | SWAP | - | E | BS |
| DUP | ROT | ABS | S>F | CLx |
+--------+--------+--------+--------+--------+
| CLOCK | 7 | 8 | 9 | / |
| FLOAT | HEX | DEC | OCT | BIN | R3
| CLOCK | 7 | 8 | 9 | / |
| FLOAT | HEX | DEC | OCT | BIN |
+--------+--------+--------+--------+--------+
| CALC | 4 | 5 | 6 | * |
| TERM | FIX | ENG | SCI | PREC | R4
| CALC | 4 | 5 | 6 | * |
| TERM | SIGN | UNSGN | | |
+--------+--------+--------+--------+--------+
| f | 1 | 2 | 3 | - |
| f | p | n | u | m | R5
| f | 1 | 2 | 3 | - |
| f | XOR | AND | NOT | OR |
+--------+--------+--------+--------+--------+
| C ON | 0 | . | FFCT | + |
| OFF | k | M | G | T | R6
| C ON | 0 | . | FCT | + |
| OFF | */ | MOD | /MOD | |
+--------+--------+--------+--------+--------+
Description |
Dongle |
Function |
Calculator |
JTAG 10pin |
GND |
CN1.1 |
GND |
GND |
3, 5, 9 |
NRST |
CN1.2 |
RES |
RST |
10 |
PA13 |
CN1.3 |
SWDIO |
- |
2 |
PA14 |
CN1.4 |
SWDCLK |
- |
4 |
PB3 |
CN1.5 |
SWO |
ROW0 |
|
3V3 |
CN1.6 |
3V3 |
3V3 |
1 |
PB2 |
CN1.7 |
|
ROW1 |
|
PA5 |
CN1.8 |
D13 |
COL4 |
|
PA6 |
CN1.9 |
D12 |
ROW2 |
|
PA7 |
CN1.10 |
D11 |
ROW3 |
|
PB8 |
CN2.1 |
D15 SCL |
SCL Display |
|
PB9 |
CN2.2 |
D14 SDA |
SDA Display |
|
PA0 |
CN2.3 |
A3 |
COL0 |
|
PA2 |
CN2.4 |
D1 |
COL2 |
|
PA3 |
CN2.5 |
D0 |
COL3 |
|
PB6 |
CN2.6 |
UARTRX |
ROW4 |
|
PA9 |
CN2.7 |
D9 |
ROW5 |
|
PA8 |
CN2.8 |
D6 |
ROW6 |
|
GND |
CN2.9 |
GND |
GND |
|
PA1 |
CN2.10 |
A2 |
COL1 |
|
Keypad
Function |
Description |
Port |
Pin |
Int |
COL0 |
D12 |
PC2 |
JP3.5 |
EXTI2 |
COL1 |
D11 |
PC3 |
JP3.6 |
EXTI3 |
COL2 |
A0 |
PA4 |
JP1.12 |
EXTI4 |
COL3 |
A1 |
PA5 |
JP1.11 |
EXTI9_5 |
COL4 |
D3 (MISO) |
PB14 |
JP1.4 |
EXTI15_10 |
Function |
Description |
Port |
Pin |
ROW0 |
UART_RX / D0 |
PB11 |
JP1.3 |
ROW1 |
A2 |
PA6 |
JP1.10 |
ROW2 |
A3 |
PA7 |
JP1.9 |
ROW3 |
A4 |
PC4 |
JP1.8 |
ROW4 |
A5 |
PC5 |
JP1.7 |
ROW5 |
UART_TX / D1 |
PB10 |
JP1.2 |
ROW6 |
D10 |
PB9 |
JP3.7 |
Display
OLED
EPD
Function |
Description |
Port |
Pin |
Int |
SPI SCK |
D2 |
PB13 |
JP1.6 |
|
SPI MOSI |
D4 |
PB15 |
JP1.5 |
|
CS |
Button B / D6 |
PC6 |
JP3.9 |
|
RESET |
Button A / D9 |
PB8 |
JP3.8 |
|
BUSY |
D13 / red LED |
PC1 |
JP3.4 |
EXTI1 |
DATA/COMMAND |
Button C / D5 |
PC7 |
JP3.10 |
|
Buttons
Buzzer
BOM
- Perfboard square grid of 0.1 inches, pads on both sides (plate-through holes), 2" x 3.5", $3
- SBC
- STM32WB55 Dongle, part of P-NUCLEO-WB55, DigiKey 497-18384-ND
- STM32F405
- OLED display
- 35 pcs push buttons, fit in 0.4" grid
- Würth 430473035826, DigiKey #732-7021-1-ND, data sheet
, $0.5
- TE Connectivity ALCOSWITCH Switches 1825910-6, $0.15
- C&K PTS 647 SN50 SMTR2 LFS, DigiKey #PTS647SN50SMTR2LFSCT-ND, smaller 4.5 x 4.5 mm, $0.2
- Wires
- USB Connector e.g.
- I2C Connector
ToDos
- Rundung ab 4 Stellen z.B. 9999e fs. :.00E3
- Fehlermeldung auf OLED, patch in datastackandmacros.s Fehler_Quit und Fehler_Quit_n
- on/off
Button Overlay
Inkscape
overlay.svg: overlay.svg
special characters
Press F8 to get to text mode.
Click with mouse on the canvas (Inkscape lingo for page) where you want your text.
You will now have the text cursor on the canvas.
Press Ctrl U to get into unicode entry mode.
The status line at the bottom of the Inkscape window will now show "Unicode (enter to finish)".
Type 03bc which is the unicode for the µ character, then press Enter (Return), if everything went well you will now have the µ character on the canvas.
LPM
app_entry.c
void Init_Exti( void )
{
/**< Disable all wakeup interrupt on CPU1 except
IPCC(36), HSEM(38),
EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI9, EXTI11, and EXTI12 for push button keys,
EXTI0 for Wakeup,
EXTI10 for UART Rx
*/
// LL_EXTI_DisableIT_0_31(~0);
#ifndef BASIC
LL_EXTI_DisableIT_0_31 ( (~0) & (~(LL_EXTI_LINE_1 | LL_EXTI_LINE_2 | LL_EXTI_LINE_3
| LL_EXTI_LINE_4 | LL_EXTI_LINE_5 | LL_EXTI_LINE_6
| LL_EXTI_LINE_7 | LL_EXTI_LINE_9 | LL_EXTI_LINE_11
| LL_EXTI_LINE_12
| LL_EXTI_LINE_0
| LL_EXTI_LINE_10
| LL_EXTI_LINE_8
)) );
#else
LL_EXTI_DisableIT_0_31 ( (~0) & (~(LL_EXTI_LINE_1 | LL_EXTI_LINE_2 | LL_EXTI_LINE_3 )) );
#endif
LL_EXTI_DisableIT_32_63( (~0) & (~(LL_EXTI_LINE_36 | LL_EXTI_LINE_38)) );
return;
}
tud_task() wait for event?
STM32Cube\Repository\STM32Cube_FW_WB_V1.17.3\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_HeartRateFreeRTOS
Low Power Timer
freertos_posrt.c
hw_timerserver.c
/**
* Configure EXTI module
*/
LL_EXTI_EnableRisingTrig_0_31(RTC_EXTI_LINE_WAKEUPTIMER_EVENT);
LL_EXTI_EnableIT_0_31(RTC_EXTI_LINE_WAKEUPTIMER_EVENT);
flash.c
taskENTER_CRITICAL();
taskEXIT_CRITICAL();
|