diff --git a/.gitignore b/.gitignore index 8a76b48..1d9052e 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ F1/client-term/client *.cxxflags *.files *.includes + +*-bak diff --git a/F0-nolib/Readme.md b/F0-nolib/Readme.md index 46c2290..55bfdcc 100644 --- a/F0-nolib/Readme.md +++ b/F0-nolib/Readme.md @@ -3,16 +3,22 @@ Samples for STM32F042-nucleo and chinese STM32F030-based devboard This directory contains examples for F0 without any library -- Chiller - chiller controller -- Servo - simple servo (like SG-90) controller - blink - simple LED blink - canbus - CAN bus on STM32F042C6T6 +- CANbus_stepper - stepper motor management over CAN-bus, USB and RS-485 +- Chiller - chiller controller +- F0_testbrd - sample code for STM32F0x2 checking via test board - htu21d_nucleo - operaing with HTU-21D in STM32F042-nucleo - morze - for STM32F030, echo data from USART1 on TIM3CH1 (PA6) as Morze code - pl2303 - CDC template (emulation of PL2303) +- QuadEncoder - sample code for working with quadrature encoder (via timer) +- Servo - simple servo (like SG-90) controller +- Snippets - some small code snippets +- TM1637 - work with 7-segment LED indicators based on TM1637 - tsys01_nucleo - read two TSYS01 sensors using STM32F042 - uart - USART over DMA with hardware end-of-string detection - uart_blink - code for STM32F030F4, echo data on USART1 and blink LEDS on PA4 and PA5 +- uart_blink_dma - USART over DMA - uart_nucleo - USART over DMA for STM32F042-nucleo - usbcdc - CDC for STM32F042 (emulation of PL2303) with working CAN bus -- USBHID - USB HID keyboard + mouse (not working yet) +- USBHID - USB HID keyboard + mouse diff --git a/F0-nolib/canbus/kicad/stm32.pro b/F0-nolib/canbus/kicad/stm32.pro index 3401bde..cef553c 100644 --- a/F0-nolib/canbus/kicad/stm32.pro +++ b/F0-nolib/canbus/kicad/stm32.pro @@ -1,4 +1,4 @@ -update=Вс 10 мар 2019 23:57:48 +update=Пт 10 апр 2020 13:30:22 version=1 last_client=kicad [pcbnew] diff --git a/F0-nolib/canbus/kicad/stm32.sch b/F0-nolib/canbus/kicad/stm32.sch index 79f1677..df57749 100644 --- a/F0-nolib/canbus/kicad/stm32.sch +++ b/F0-nolib/canbus/kicad/stm32.sch @@ -1,42 +1,5 @@ -EESchema Schematic File Version 2 -LIBS:stm32-rescue -LIBS:power -LIBS:device -LIBS:transistors -LIBS:conn -LIBS:linear -LIBS:regul -LIBS:74xx -LIBS:cmos4000 -LIBS:adc-dac -LIBS:memory -LIBS:xilinx -LIBS:microcontrollers -LIBS:dsp -LIBS:microchip -LIBS:analog_switches -LIBS:motorola -LIBS:texas -LIBS:intel -LIBS:audio -LIBS:interface -LIBS:digital-audio -LIBS:philips -LIBS:display -LIBS:cypress -LIBS:siliconi -LIBS:opto -LIBS:atmel -LIBS:contrib -LIBS:valves -LIBS:stm32 -LIBS:vreg -LIBS:elements -LIBS:ESD_Protection -LIBS:switches -LIBS:acs712 -LIBS:stm32-cache -EELAYER 25 0 +EESchema Schematic File Version 4 +EELAYER 30 0 EELAYER END $Descr A3 16535 11693 encoding utf-8 @@ -51,7 +14,7 @@ Comment3 "" Comment4 "" $EndDescr $Comp -L C C11 +L stm32-rescue:C C11 U 1 1 58C42D39 P 8150 9950 F 0 "C11" H 8175 10050 50 0000 L CNN @@ -62,7 +25,7 @@ F 3 "" H 8150 9950 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L LM1117-3.3-RESCUE-stm32 U2 +L stm32-rescue:LM1117-3.3-RESCUE-stm32 U2 U 1 1 58C431FC P 2350 4900 F 0 "U2" H 2450 4650 50 0000 C CNN @@ -73,7 +36,7 @@ F 3 "" H 2350 4900 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L MCP2551-I/SN U4 +L stm32-rescue:MCP2551-I_SN U4 U 1 1 58C43297 P 3550 1550 F 0 "U4" H 3150 1900 50 0000 L CNN @@ -84,7 +47,7 @@ F 3 "" H 3550 1550 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L USB_A-RESCUE-stm32 P13 +L stm32-rescue:USB_A-RESCUE-stm32 P13 U 1 1 58C433D0 P 14300 8950 F 0 "P13" H 14500 8750 50 0000 C CNN @@ -95,7 +58,7 @@ F 3 "" V 14250 8850 50 0000 C CNN 0 1 1 0 $EndComp $Comp -L GND #PWR01 +L stm32-rescue:GND #PWR01 U 1 1 58C43B9F P 1600 3750 F 0 "#PWR01" H 1600 3500 50 0001 C CNN @@ -108,7 +71,7 @@ $EndComp Text Notes 1000 3100 0 60 ~ 0 5V power source $Comp -L +5V #PWR02 +L stm32-rescue:+5V #PWR02 U 1 1 58C45269 P 1800 4900 F 0 "#PWR02" H 1800 4750 50 0001 C CNN @@ -119,7 +82,7 @@ F 3 "" H 1800 4900 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR03 +L stm32-rescue:GND #PWR03 U 1 1 58C453C7 P 2350 5250 F 0 "#PWR03" H 2350 5000 50 0001 C CNN @@ -130,7 +93,7 @@ F 3 "" H 2350 5250 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L CP C2 +L stm32-rescue:CP C2 U 1 1 58C454F6 P 2750 5050 F 0 "C2" H 2775 5150 50 0000 L CNN @@ -141,7 +104,7 @@ F 3 "" H 2750 5050 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L +3.3V #PWR04 +L stm32-rescue:+3.3V #PWR04 U 1 1 58C455CB P 2950 4900 F 0 "#PWR04" H 2950 4750 50 0001 C CNN @@ -152,7 +115,7 @@ F 3 "" H 2950 4900 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L PESD1CAN D3 +L stm32-rescue:PESD1CAN D3 U 1 1 58C46522 P 4550 2450 F 0 "D3" H 4550 2100 50 0000 C CNN @@ -163,7 +126,7 @@ F 3 "" H 4550 2450 50 0000 C CNN 0 1 1 0 $EndComp $Comp -L GND #PWR05 +L stm32-rescue:GND #PWR05 U 1 1 58C47600 P 4450 2900 F 0 "#PWR05" H 4450 2650 50 0001 C CNN @@ -174,7 +137,7 @@ F 3 "" H 4450 2900 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L +5V #PWR06 +L stm32-rescue:+5V #PWR06 U 1 1 58C47B3E P 3550 1100 F 0 "#PWR06" H 3550 950 50 0001 C CNN @@ -185,7 +148,7 @@ F 3 "" H 3550 1100 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R8 +L stm32-rescue:R R8 U 1 1 58C47F04 P 3000 1950 F 0 "R8" V 3080 1950 50 0000 C CNN @@ -196,7 +159,7 @@ F 3 "" H 3000 1950 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR07 +L stm32-rescue:GND #PWR07 U 1 1 58C4802D P 3550 2050 F 0 "#PWR07" H 3550 1800 50 0001 C CNN @@ -207,7 +170,7 @@ F 3 "" H 3550 2050 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR08 +L stm32-rescue:GND #PWR08 U 1 1 58C4805F P 3000 2150 F 0 "#PWR08" H 3000 1900 50 0001 C CNN @@ -218,7 +181,7 @@ F 3 "" H 3000 2150 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R9 +L stm32-rescue:R R9 U 1 1 58C488C6 P 4900 1800 F 0 "R9" V 4980 1800 50 0000 C CNN @@ -229,7 +192,7 @@ F 3 "" H 4900 1800 50 0000 C CNN 0 -1 -1 0 $EndComp $Comp -L Jumper_NO_Small JP1 +L stm32-rescue:Jumper_NO_Small JP1 U 1 1 58C4940D P 4950 1200 F 0 "JP1" H 4950 1280 50 0000 C CNN @@ -250,7 +213,7 @@ LED0 Text Label 4450 3950 2 60 ~ 0 LED1 $Comp -L LED-RESCUE-stm32 D5 +L stm32-rescue:LED-RESCUE-stm32 D5 U 1 1 5908EA64 P 4750 3650 F 0 "D5" H 4750 3750 50 0000 C CNN @@ -261,7 +224,7 @@ F 3 "" H 4750 3650 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R29 +L stm32-rescue:R R29 U 1 1 5908EB17 P 5150 3650 F 0 "R29" V 5230 3650 50 0000 C CNN @@ -272,7 +235,7 @@ F 3 "" H 5150 3650 50 0000 C CNN 0 -1 -1 0 $EndComp $Comp -L +3.3V #PWR09 +L stm32-rescue:+3.3V #PWR09 U 1 1 5908F9F4 P 5450 3650 F 0 "#PWR09" H 5450 3500 50 0001 C CNN @@ -283,7 +246,7 @@ F 3 "" H 5450 3650 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L C C12 +L stm32-rescue:C C12 U 1 1 590935EA P 8450 9950 F 0 "C12" H 8475 10050 50 0000 L CNN @@ -294,7 +257,7 @@ F 3 "" H 8450 9950 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L C C13 +L stm32-rescue:C C13 U 1 1 59093675 P 8750 9950 F 0 "C13" H 8775 10050 50 0000 L CNN @@ -307,7 +270,7 @@ $EndComp Text Label 8450 5900 0 60 ~ 0 VDD $Comp -L USB6B1 D7 +L stm32-rescue:USB6B1 D7 U 1 1 59098D4D P 12950 8900 F 0 "D7" H 12950 8450 50 0000 C CNN @@ -318,7 +281,7 @@ F 3 "" V 13150 8800 50 0000 C CNN -1 0 0 -1 $EndComp $Comp -L LED-RESCUE-stm32 D6 +L stm32-rescue:LED-RESCUE-stm32 D6 U 1 1 5909AF9A P 4750 3950 F 0 "D6" H 4750 4050 50 0000 C CNN @@ -329,7 +292,7 @@ F 3 "" H 4750 3950 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R30 +L stm32-rescue:R R30 U 1 1 5909AFA0 P 5150 3950 F 0 "R30" V 5230 3950 50 0000 C CNN @@ -340,7 +303,7 @@ F 3 "" H 5150 3950 50 0000 C CNN 0 -1 -1 0 $EndComp $Comp -L +3.3V #PWR010 +L stm32-rescue:+3.3V #PWR010 U 1 1 5909AFA6 P 5450 3950 F 0 "#PWR010" H 5450 3800 50 0001 C CNN @@ -353,7 +316,7 @@ $EndComp Text Notes 4300 3400 0 60 ~ 0 LED indicators $Comp -L LED-RESCUE-stm32 D2 +L stm32-rescue:LED-RESCUE-stm32 D2 U 1 1 5909BFFC P 3100 5050 F 0 "D2" H 3100 5150 50 0000 C CNN @@ -364,7 +327,7 @@ F 3 "" H 3100 5050 50 0000 C CNN 0 -1 -1 0 $EndComp $Comp -L R R5 +L stm32-rescue:R R5 U 1 1 5909C002 P 2850 5350 F 0 "R5" V 2930 5350 50 0000 C CNN @@ -378,7 +341,7 @@ Text Notes 1000 4600 0 60 ~ 0 3.3V MCU power source NoConn ~ 3050 1650 $Comp -L +3.3V #PWR011 +L stm32-rescue:+3.3V #PWR011 U 1 1 590A0C2D P 9450 10100 F 0 "#PWR011" H 9450 9950 50 0001 C CNN @@ -389,7 +352,7 @@ F 3 "" H 9450 10100 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR012 +L stm32-rescue:GND #PWR012 U 1 1 590A1958 P 7800 9800 F 0 "#PWR012" H 7800 9550 50 0001 C CNN @@ -402,7 +365,7 @@ $EndComp Text Label 9550 10100 0 60 ~ 0 VDD $Comp -L GND #PWR013 +L stm32-rescue:GND #PWR013 U 1 1 590A6FD0 P 12450 9300 F 0 "#PWR013" H 12450 9050 50 0001 C CNN @@ -413,7 +376,7 @@ F 3 "" H 12450 9300 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L C C14 +L stm32-rescue:C C14 U 1 1 590A8102 P 9050 9950 F 0 "C14" H 9075 10050 50 0000 L CNN @@ -425,7 +388,7 @@ F 3 "" H 9050 9950 50 0000 C CNN $EndComp NoConn ~ 5450 6750 $Comp -L CONN_01X03 P12 +L stm32-rescue:CONN_01X03 P12 U 1 1 590AD3A7 P 12200 9600 F 0 "P12" H 12200 9800 50 0000 C CNN @@ -436,7 +399,7 @@ F 3 "" H 12200 9600 50 0000 C CNN 1 0 0 1 $EndComp $Comp -L GND #PWR014 +L stm32-rescue:GND #PWR014 U 1 1 590AD6E0 P 12000 9750 F 0 "#PWR014" H 12000 9500 50 0001 C CNN @@ -457,7 +420,7 @@ CAN_Rx Text Label 6350 2900 0 60 ~ 0 12Vin $Comp -L Q_PMOS_GSD Q1 +L stm32-rescue:Q_PMOS_GSD Q1 U 1 1 5910E2F2 P 5500 2700 F 0 "Q1" H 5700 2750 50 0000 L CNN @@ -476,7 +439,7 @@ External 12V voltage control Text Notes 11900 7850 0 60 ~ 0 External 5V voltage control $Comp -L R R3 +L stm32-rescue:R R3 U 1 1 590A6DD4 P 1600 6050 F 0 "R3" V 1680 6050 50 0000 C CNN @@ -487,7 +450,7 @@ F 3 "" H 1600 6050 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R4 +L stm32-rescue:R R4 U 1 1 590A6DDA P 1600 6450 F 0 "R4" V 1680 6450 50 0000 C CNN @@ -498,7 +461,7 @@ F 3 "" H 1600 6450 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R6 +L stm32-rescue:R R6 U 1 1 590A6F68 P 2400 6050 F 0 "R6" V 2480 6050 50 0000 C CNN @@ -509,7 +472,7 @@ F 3 "" H 2400 6050 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R7 +L stm32-rescue:R R7 U 1 1 590A6F6E P 2400 6450 F 0 "R7" V 2480 6450 50 0000 C CNN @@ -520,7 +483,7 @@ F 3 "" H 2400 6450 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR015 +L stm32-rescue:GND #PWR015 U 1 1 590A7717 P 1600 6650 F 0 "#PWR015" H 1600 6400 50 0001 C CNN @@ -531,7 +494,7 @@ F 3 "" H 1600 6650 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR016 +L stm32-rescue:GND #PWR016 U 1 1 590A77FA P 2400 6650 F 0 "#PWR016" H 2400 6400 50 0001 C CNN @@ -544,7 +507,7 @@ $EndComp Text Label 1450 5900 2 60 ~ 0 12Vin $Comp -L +5V #PWR017 +L stm32-rescue:+5V #PWR017 U 1 1 590AA81F P 2400 5850 F 0 "#PWR017" H 2400 5700 50 0001 C CNN @@ -575,7 +538,7 @@ BOOT0 Text Label 1350 1100 0 60 ~ 0 BOOT0 $Comp -L R R27 +L stm32-rescue:R R27 U 1 1 590D30C8 P 1350 1400 F 0 "R27" V 1430 1400 50 0000 C CNN @@ -586,7 +549,7 @@ F 3 "" H 1350 1400 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R28 +L stm32-rescue:R R28 U 1 1 590D3334 P 1350 2250 F 0 "R28" V 1430 2250 50 0000 C CNN @@ -597,7 +560,7 @@ F 3 "" H 1350 2250 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L C C6 +L stm32-rescue:C C6 U 1 1 590D4150 P 1950 1400 F 0 "C6" H 1975 1500 50 0000 L CNN @@ -608,7 +571,7 @@ F 3 "" H 1950 1400 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L C C5 +L stm32-rescue:C C5 U 1 1 590D4832 P 1900 2250 F 0 "C5" H 1925 2350 50 0000 L CNN @@ -619,7 +582,7 @@ F 3 "" H 1900 2250 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L SW_Push SW2 +L stm32-rescue:SW_Push SW2 U 1 1 5909F6B6 P 1650 1400 F 0 "SW2" H 1700 1500 50 0000 L CNN @@ -630,7 +593,7 @@ F 3 "" H 1650 1600 50 0000 C CNN 0 1 1 0 $EndComp $Comp -L SW_Push SW1 +L stm32-rescue:SW_Push SW1 U 1 1 590A0134 P 1600 2250 F 0 "SW1" H 1650 2350 50 0000 L CNN @@ -641,7 +604,7 @@ F 3 "" H 1600 2450 50 0000 C CNN 0 1 1 0 $EndComp $Comp -L GND #PWR018 +L stm32-rescue:GND #PWR018 U 1 1 590A03AF P 1350 1600 F 0 "#PWR018" H 1350 1350 50 0001 C CNN @@ -652,7 +615,7 @@ F 3 "" H 1350 1600 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L +3.3V #PWR019 +L stm32-rescue:+3.3V #PWR019 U 1 1 590A1E6C P 1800 1650 F 0 "#PWR019" H 1800 1500 50 0001 C CNN @@ -663,7 +626,7 @@ F 3 "" H 1800 1650 50 0000 C CNN -1 0 0 1 $EndComp $Comp -L +3.3V #PWR020 +L stm32-rescue:+3.3V #PWR020 U 1 1 590A465B P 1350 2500 F 0 "#PWR020" H 1350 2350 50 0001 C CNN @@ -674,7 +637,7 @@ F 3 "" H 1350 2500 50 0000 C CNN -1 0 0 1 $EndComp $Comp -L GND #PWR021 +L stm32-rescue:GND #PWR021 U 1 1 590A509B P 1750 2500 F 0 "#PWR021" H 1750 2250 50 0001 C CNN @@ -685,7 +648,7 @@ F 3 "" H 1750 2500 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L PWR_FLAG #FLG022 +L stm32-rescue:PWR_FLAG #FLG022 U 1 1 590C1070 P 6250 2900 F 0 "#FLG022" H 6250 2995 50 0001 C CNN @@ -696,7 +659,7 @@ F 3 "" H 6250 2900 50 0000 C CNN -1 0 0 1 $EndComp $Comp -L PWR_FLAG #FLG023 +L stm32-rescue:PWR_FLAG #FLG023 U 1 1 590CEE5E P 14000 8600 F 0 "#FLG023" H 14000 8695 50 0001 C CNN @@ -707,7 +670,7 @@ F 3 "" H 14000 8600 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR024 +L stm32-rescue:GND #PWR024 U 1 1 590CF25B P 14400 9300 F 0 "#PWR024" H 14400 9050 50 0001 C CNN @@ -718,7 +681,7 @@ F 3 "" H 14400 9300 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L PWR_FLAG #FLG025 +L stm32-rescue:PWR_FLAG #FLG025 U 1 1 590D075A P 13450 9350 F 0 "#FLG025" H 13450 9445 50 0001 C CNN @@ -729,7 +692,7 @@ F 3 "" H 13450 9350 50 0000 C CNN -1 0 0 1 $EndComp $Comp -L CONN_01X01 P15 +L stm32-rescue:CONN_01X01 P15 U 1 1 59143415 P 15700 8850 F 0 "P15" H 15700 8950 50 0000 C CNN @@ -740,7 +703,7 @@ F 3 "" H 15700 8850 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L CONN_01X01 P16 +L stm32-rescue:CONN_01X01 P16 U 1 1 5914456D P 15700 9100 F 0 "P16" H 15700 9200 50 0000 C CNN @@ -751,7 +714,7 @@ F 3 "" H 15700 9100 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L CONN_01X01 P17 +L stm32-rescue:CONN_01X01 P17 U 1 1 591446F3 P 15700 9350 F 0 "P17" H 15700 9450 50 0000 C CNN @@ -762,7 +725,7 @@ F 3 "" H 15700 9350 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L CONN_01X01 P18 +L stm32-rescue:CONN_01X01 P18 U 1 1 591446F9 P 15700 9600 F 0 "P18" H 15700 9700 50 0000 C CNN @@ -777,7 +740,7 @@ NoConn ~ 15500 9100 NoConn ~ 15500 9350 NoConn ~ 15500 9600 $Comp -L C C15 +L stm32-rescue:C C15 U 1 1 596772D4 P 1350 3600 F 0 "C15" H 1375 3700 50 0000 L CNN @@ -788,7 +751,7 @@ F 3 "" H 1350 3600 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L D_Zener D9 +L stm32-rescue:D_Zener D9 U 1 1 5968325A P 2650 6450 F 0 "D9" H 2650 6550 50 0000 C CNN @@ -799,7 +762,7 @@ F 3 "" H 2650 6450 50 0000 C CNN 0 1 1 0 $EndComp $Comp -L D_Zener D8 +L stm32-rescue:D_Zener D8 U 1 1 59684468 P 1850 6450 F 0 "D8" H 1850 6550 50 0000 C CNN @@ -810,7 +773,7 @@ F 3 "" H 1850 6450 50 0000 C CNN 0 1 1 0 $EndComp $Comp -L R R34 +L stm32-rescue:R R34 U 1 1 5968E385 P 12200 8800 F 0 "R34" V 12280 8800 50 0000 C CNN @@ -821,7 +784,7 @@ F 3 "" H 12200 8800 50 0001 C CNN 0 1 1 0 $EndComp $Comp -L R R35 +L stm32-rescue:R R35 U 1 1 5968E83B P 12200 9000 F 0 "R35" V 12280 9000 50 0000 C CNN @@ -838,7 +801,7 @@ brdaddr1 Text Label 11650 8550 0 60 ~ 0 brdaddr2 $Comp -L CONN_02X03 J1 +L stm32-rescue:CONN_02X03 J1 U 1 1 5A50A198 P 6600 3650 F 0 "J1" H 6600 3850 50 0000 C CNN @@ -857,7 +820,7 @@ brdaddr1 Text Label 6850 3750 0 60 ~ 0 brdaddr2 $Comp -L GND #PWR026 +L stm32-rescue:GND #PWR026 U 1 1 5A50D34D P 6250 3800 F 0 "#PWR026" H 6250 3550 50 0001 C CNN @@ -876,7 +839,7 @@ Text Label 1300 5150 2 60 ~ 0 Text Label 1300 4900 2 60 ~ 0 5Vreg $Comp -L D_Schottky D4 +L stm32-rescue:D_Schottky D4 U 1 1 5A545B43 P 1500 5150 F 0 "D4" H 1500 5250 50 0000 C CNN @@ -887,7 +850,7 @@ F 3 "" H 1500 5150 50 0001 C CNN -1 0 0 1 $EndComp $Comp -L LM1117-3.3-RESCUE-stm32 U1 +L stm32-rescue:LM1117-3.3-RESCUE-stm32 U1 U 1 1 5A5866DE P 2000 3400 F 0 "U1" H 2100 3150 50 0000 C CNN @@ -898,7 +861,7 @@ F 3 "" H 2000 3400 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR027 +L stm32-rescue:GND #PWR027 U 1 1 5A586C06 P 2000 3800 F 0 "#PWR027" H 2000 3550 50 0001 C CNN @@ -909,7 +872,7 @@ F 3 "" H 2000 3800 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L C C1 +L stm32-rescue:C C1 U 1 1 5A586F5C P 2400 3550 F 0 "C1" H 2425 3650 50 0000 L CNN @@ -920,7 +883,7 @@ F 3 "" H 2400 3550 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L +5V #PWR028 +L stm32-rescue:+5V #PWR028 U 1 1 5A5881A0 P 2700 3400 F 0 "#PWR028" H 2700 3250 50 0001 C CNN @@ -936,7 +899,7 @@ NoConn ~ 5450 8950 Text Label 1250 3400 0 60 ~ 0 12Vin $Comp -L DB9_Female J2 +L stm32-rescue:DB9_Female J2 U 1 1 5A5935B2 P 6000 1650 F 0 "J2" H 6000 2300 50 0000 C CNN @@ -947,7 +910,7 @@ F 3 "" H 6000 1650 50 0001 C CNN 1 0 0 -1 $EndComp $Comp -L DB9_Male J3 +L stm32-rescue:DB9_Male J3 U 1 1 5A59367B P 7100 1650 F 0 "J3" H 7100 2300 50 0000 C CNN @@ -958,7 +921,7 @@ F 3 "" H 7100 1650 50 0001 C CNN 1 0 0 -1 $EndComp Wire Wire Line - 1250 3400 1700 3400 + 1250 3400 1350 3400 Wire Wire Line 1600 3750 1600 3700 Wire Notes Line @@ -970,13 +933,13 @@ Wire Notes Line Wire Notes Line 3850 2950 950 2950 Wire Wire Line - 1300 4900 2050 4900 + 1300 4900 1800 4900 Wire Wire Line 2350 5250 2350 5200 Wire Wire Line - 2350 5200 2750 5200 + 2350 5200 2700 5200 Wire Wire Line - 2650 4900 3100 4900 + 2650 4900 2750 4900 Connection ~ 2750 4900 Wire Wire Line 4350 1650 4350 2150 @@ -1006,12 +969,12 @@ Wire Wire Line Wire Wire Line 3050 1450 2850 1450 Wire Wire Line - 8350 9650 8650 9650 + 8350 9650 8450 9650 Connection ~ 8450 9650 Wire Wire Line 8450 9800 8450 9650 Wire Wire Line - 8350 6050 8650 6050 + 8350 6050 8450 6050 Connection ~ 8450 6050 Wire Wire Line 8450 6050 8450 5900 @@ -1072,10 +1035,10 @@ Wire Notes Line Wire Notes Line 950 5500 950 4450 Wire Wire Line - 7800 9800 9050 9800 + 7800 9800 8150 9800 Connection ~ 8450 9800 Wire Wire Line - 8150 10100 9550 10100 + 8150 10100 8450 10100 Connection ~ 8450 10100 Connection ~ 8150 9800 Connection ~ 8750 10100 @@ -1099,24 +1062,24 @@ Connection ~ 9050 10100 Wire Wire Line 12000 9700 12000 9750 Wire Wire Line - 5600 2900 6350 2900 + 5600 2900 6250 2900 Wire Wire Line 2400 5900 2400 5850 Wire Wire Line - 2400 6200 2400 6300 + 2400 6200 2400 6250 Wire Wire Line 2400 6600 2400 6650 Wire Wire Line 1450 5900 1600 5900 Wire Wire Line - 1600 6200 1600 6300 + 1600 6200 1600 6250 Wire Wire Line 1600 6600 1600 6650 Wire Wire Line - 1600 6250 1950 6250 + 1600 6250 1850 6250 Connection ~ 1600 6250 Wire Wire Line - 2400 6250 2750 6250 + 2400 6250 2650 6250 Connection ~ 2400 6250 Wire Notes Line 950 5600 3950 5600 @@ -1129,32 +1092,32 @@ Wire Notes Line Wire Wire Line 1350 1600 1350 1550 Wire Wire Line - 1350 1100 1350 1250 + 1350 1100 1350 1200 Wire Wire Line 1950 1200 1950 1250 Wire Wire Line - 1350 1200 1950 1200 + 1350 1200 1650 1200 Connection ~ 1650 1200 Connection ~ 1350 1200 Wire Wire Line - 1650 1600 1950 1600 + 1650 1600 1800 1600 Wire Wire Line 1950 1600 1950 1550 Wire Wire Line 1800 1650 1800 1600 Connection ~ 1800 1600 Wire Wire Line - 1350 2000 1350 2100 + 1350 2000 1350 2050 Wire Wire Line 1350 2500 1350 2400 Wire Wire Line - 1350 2050 1900 2050 + 1350 2050 1600 2050 Connection ~ 1350 2050 Wire Wire Line 1900 2050 1900 2100 Connection ~ 1600 2050 Wire Wire Line - 1600 2450 1900 2450 + 1600 2450 1750 2450 Wire Wire Line 1900 2450 1900 2400 Wire Wire Line @@ -1206,13 +1169,13 @@ Wire Wire Line Wire Wire Line 12050 9000 12000 9000 Wire Wire Line - 5450 1650 4050 1650 + 5450 1650 4750 1650 Wire Wire Line 6250 3800 6250 3750 Wire Wire Line 6250 3750 6350 3750 Wire Wire Line - 6350 3750 6350 3550 + 6350 3750 6350 3650 Connection ~ 6350 3650 Connection ~ 6350 3750 Wire Notes Line @@ -1231,15 +1194,15 @@ Wire Wire Line Wire Wire Line 1350 5150 1300 5150 Wire Wire Line - 2650 4850 2650 4950 + 2650 4850 2650 4900 Connection ~ 2650 4900 Connection ~ 2350 5200 Wire Wire Line - 2000 3700 2000 3800 + 2000 3700 2000 3750 Wire Wire Line - 2300 3350 2300 3450 + 2300 3350 2300 3400 Wire Wire Line - 2300 3400 2850 3400 + 2300 3400 2400 3400 Connection ~ 2300 3400 Wire Wire Line 2000 3750 2400 3750 @@ -1248,7 +1211,7 @@ Wire Wire Line Connection ~ 2000 3750 Connection ~ 2400 3400 Wire Wire Line - 5450 900 5450 1650 + 5450 900 5450 1450 Wire Wire Line 5450 1450 5700 1450 Wire Wire Line @@ -1259,7 +1222,7 @@ Wire Wire Line 6500 1850 6800 1850 Connection ~ 5450 1450 Wire Wire Line - 5250 850 5250 1550 + 5250 850 5250 1450 Wire Wire Line 5250 1550 5700 1550 Wire Wire Line @@ -1270,22 +1233,22 @@ Wire Wire Line 6550 850 5250 850 Connection ~ 5250 1450 Wire Wire Line - 6650 1350 6650 2500 + 6650 1350 6650 2350 Wire Wire Line 6650 1350 6800 1350 Wire Wire Line 5700 1950 5600 1950 Wire Wire Line - 5600 1950 5600 2500 + 5600 1950 5600 2350 Wire Wire Line 5600 2350 6650 2350 Connection ~ 5600 2350 Wire Wire Line 5700 1650 5550 1650 Wire Wire Line - 5550 1650 5550 1750 + 5550 1650 5550 1700 $Comp -L GND #PWR029 +L stm32-rescue:GND #PWR029 U 1 1 5A597EA9 P 5550 1750 F 0 "#PWR029" H 5550 1500 50 0001 C CNN @@ -1296,7 +1259,7 @@ F 3 "" H 5550 1750 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR030 +L stm32-rescue:GND #PWR030 U 1 1 5A597F41 P 6300 1650 F 0 "#PWR030" H 6300 1400 50 0001 C CNN @@ -1309,7 +1272,7 @@ $EndComp Wire Wire Line 6300 1650 6800 1650 $Comp -L GND #PWR031 +L stm32-rescue:GND #PWR031 U 1 1 5A598436 P 5300 2750 F 0 "#PWR031" H 5300 2500 50 0001 C CNN @@ -1344,7 +1307,7 @@ Wire Notes Line Wire Notes Line 2450 2450 2450 800 $Comp -L PWR_FLAG #FLG032 +L stm32-rescue:PWR_FLAG #FLG032 U 1 1 5A59F726 P 5300 1850 F 0 "#FLG032" H 5300 1925 50 0001 C CNN @@ -1355,7 +1318,7 @@ F 3 "" H 5300 1850 50 0001 C CNN -1 0 0 1 $EndComp $Comp -L Q_NMOS_GSD Q2 +L stm32-rescue:Q_NMOS_GSD Q2 U 1 1 5A5A1353 P 8800 1200 F 0 "Q2" H 9000 1250 50 0000 L CNN @@ -1366,7 +1329,7 @@ F 3 "" H 8800 1200 50 0001 C CNN 1 0 0 -1 $EndComp $Comp -L R R1 +L stm32-rescue:R R1 U 1 1 5A5A1F28 P 8350 1200 F 0 "R1" V 8430 1200 50 0000 C CNN @@ -1379,7 +1342,7 @@ $EndComp Wire Wire Line 8500 1200 8600 1200 $Comp -L GND #PWR033 +L stm32-rescue:GND #PWR033 U 1 1 5A5A2353 P 8900 1450 F 0 "#PWR033" H 8900 1200 50 0001 C CNN @@ -1392,7 +1355,7 @@ $EndComp Wire Wire Line 8900 1450 8900 1400 $Comp -L Conn_01x07 J4 +L stm32-rescue:Conn_01x07 J4 U 1 1 5A5A2990 P 10450 2100 F 0 "J4" H 10450 2500 50 0000 C CNN @@ -1403,7 +1366,7 @@ F 3 "" H 10450 2100 50 0001 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR034 +L stm32-rescue:GND #PWR034 U 1 1 5A5A2ECA P 10150 2500 F 0 "#PWR034" H 10150 2250 50 0001 C CNN @@ -1418,7 +1381,7 @@ Wire Wire Line Wire Wire Line 10150 2400 10250 2400 $Comp -L +3.3V #PWR035 +L stm32-rescue:+3.3V #PWR035 U 1 1 5A5A3661 P 10150 1250 F 0 "#PWR035" H 10150 1100 50 0001 C CNN @@ -1429,7 +1392,7 @@ F 3 "" H 10150 1250 50 0000 C CNN 1 0 0 -1 $EndComp $Comp -L R R13 +L stm32-rescue:R R13 U 1 1 5A5A3B4E P 10150 1450 F 0 "R13" V 10230 1450 50 0000 C CNN @@ -1450,7 +1413,7 @@ OUTP1 Text Label 10250 1900 2 60 ~ 0 OUTP1 $Comp -L Q_NMOS_GSD Q3 +L stm32-rescue:Q_NMOS_GSD Q3 U 1 1 5A5A57A1 P 8800 2000 F 0 "Q3" H 9000 2050 50 0000 L CNN @@ -1461,7 +1424,7 @@ F 3 "" H 8800 2000 50 0001 C CNN 1 0 0 -1 $EndComp $Comp -L R R2 +L stm32-rescue:R R2 U 1 1 5A5A57A7 P 8350 2000 F 0 "R2" V 8430 2000 50 0000 C CNN @@ -1474,7 +1437,7 @@ $EndComp Wire Wire Line 8500 2000 8600 2000 $Comp -L GND #PWR036 +L stm32-rescue:GND #PWR036 U 1 1 5A5A57AE P 8900 2250 F 0 "#PWR036" H 8900 2000 50 0001 C CNN @@ -1489,7 +1452,7 @@ Wire Wire Line Text Label 8900 1800 0 60 ~ 0 OUTP2 $Comp -L Q_NMOS_GSD Q4 +L stm32-rescue:Q_NMOS_GSD Q4 U 1 1 5A5A5C15 P 8800 2750 F 0 "Q4" H 9000 2800 50 0000 L CNN @@ -1500,7 +1463,7 @@ F 3 "" H 8800 2750 50 0001 C CNN 1 0 0 -1 $EndComp $Comp -L R R10 +L stm32-rescue:R R10 U 1 1 5A5A5C1B P 8350 2750 F 0 "R10" V 8430 2750 50 0000 C CNN @@ -1513,7 +1476,7 @@ $EndComp Wire Wire Line 8500 2750 8600 2750 $Comp -L GND #PWR037 +L stm32-rescue:GND #PWR037 U 1 1 5A5A5C22 P 8900 3000 F 0 "#PWR037" H 8900 2750 50 0001 C CNN @@ -1536,7 +1499,7 @@ INP1 Text Label 9500 2400 2 60 ~ 0 INP2 $Comp -L R R11 +L stm32-rescue:R R11 U 1 1 5A5A929C P 9850 2200 F 0 "R11" V 9930 2200 50 0000 C CNN @@ -1547,7 +1510,7 @@ F 3 "" H 9850 2200 50 0000 C CNN 0 -1 -1 0 $EndComp $Comp -L R R12 +L stm32-rescue:R R12 U 1 1 5A5A93D0 P 9850 2400 F 0 "R12" V 9930 2400 50 0000 C CNN @@ -1590,7 +1553,7 @@ O2 Text Label 5450 7750 2 60 ~ 0 O3 $Comp -L Conn_01x02 J5 +L stm32-rescue:Conn_01x02 J5 U 1 1 5A5B6143 P 7050 2500 F 0 "J5" H 7050 2600 50 0000 C CNN @@ -1601,7 +1564,7 @@ F 3 "" H 7050 2500 50 0001 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR038 +L stm32-rescue:GND #PWR038 U 1 1 5A5B6FD3 P 6800 2750 F 0 "#PWR038" H 6800 2500 50 0001 C CNN @@ -1619,7 +1582,7 @@ Wire Wire Line 6650 2500 6850 2500 Connection ~ 6650 2350 $Comp -L SP0502BAHT D1 +L stm32-rescue:SP0502BAHT D1 U 1 1 5A5D29E2 P 9650 2800 F 0 "D1" H 9850 2800 50 0000 L CNN @@ -1630,7 +1593,7 @@ F 3 "" H 9775 2925 50 0001 C CNN 1 0 0 -1 $EndComp $Comp -L GND #PWR039 +L stm32-rescue:GND #PWR039 U 1 1 5A5D32F5 P 9650 3050 F 0 "#PWR039" H 9650 2800 50 0001 C CNN @@ -1645,7 +1608,7 @@ Wire Wire Line Wire Wire Line 9550 2600 9550 2200 Wire Wire Line - 9500 2200 9700 2200 + 9500 2200 9550 2200 Wire Wire Line 9750 2600 9700 2600 Wire Wire Line @@ -1655,7 +1618,7 @@ Wire Wire Line 9700 2400 9500 2400 Connection ~ 9700 2400 $Comp -L R R14 +L stm32-rescue:R R14 U 1 1 5A5D5996 P 4650 1450 F 0 "R14" V 4730 1450 50 0000 C CNN @@ -1666,9 +1629,9 @@ F 3 "" H 4650 1450 50 0001 C CNN 0 1 1 0 $EndComp Wire Wire Line - 4800 1450 5250 1450 + 4800 1450 4850 1450 Wire Wire Line - 4050 1450 4500 1450 + 4050 1450 4450 1450 Wire Wire Line 4550 2150 4550 1850 Wire Wire Line @@ -1683,7 +1646,7 @@ Wire Wire Line Connection ~ 5550 1700 NoConn ~ 11650 9050 $Comp -L STM32F042C6Tx U7 +L stm32-rescue:STM32F042C6Tx U7 U 1 1 58C42C0E P 8550 7850 F 0 "U7" H 5550 9575 50 0000 L BNN @@ -1723,7 +1686,7 @@ NoConn ~ 5450 6950 NoConn ~ 5450 7050 NoConn ~ 11650 8350 $Comp -L Conn_01x01 J6 +L stm32-rescue:Conn_01x01 J6 U 1 1 5A6066AA P 3050 3400 F 0 "J6" H 3050 3500 50 0000 C CNN @@ -1734,4 +1697,88 @@ F 3 "" H 3050 3400 50 0001 C CNN 1 0 0 -1 $EndComp Connection ~ 2700 3400 +Wire Wire Line + 2750 4900 2950 4900 +Wire Wire Line + 4350 1650 4050 1650 +Wire Wire Line + 4750 1650 4350 1650 +Wire Wire Line + 4850 1450 5250 1450 +Wire Wire Line + 8450 9650 8550 9650 +Wire Wire Line + 8450 6050 8550 6050 +Wire Wire Line + 2700 5200 2750 5200 +Wire Wire Line + 2950 4900 3100 4900 +Wire Wire Line + 8450 9800 8750 9800 +Wire Wire Line + 8450 10100 8750 10100 +Wire Wire Line + 8150 9800 8450 9800 +Wire Wire Line + 9450 10100 9550 10100 +Wire Wire Line + 8550 6050 8650 6050 +Wire Wire Line + 8550 9650 8650 9650 +Wire Wire Line + 8750 9800 9050 9800 +Wire Wire Line + 9050 10100 9450 10100 +Wire Wire Line + 1600 6250 1600 6300 +Wire Wire Line + 2400 6250 2400 6300 +Wire Wire Line + 1650 1200 1950 1200 +Wire Wire Line + 1350 1200 1350 1250 +Wire Wire Line + 1800 1600 1950 1600 +Wire Wire Line + 1350 2050 1350 2100 +Wire Wire Line + 1600 2050 1900 2050 +Wire Wire Line + 1750 2450 1900 2450 +Wire Wire Line + 6250 2900 6350 2900 +Wire Wire Line + 1350 3400 1700 3400 +Wire Wire Line + 2650 6250 2750 6250 +Wire Wire Line + 1850 6250 1950 6250 +Wire Wire Line + 6350 3650 6350 3550 +Wire Wire Line + 1800 4900 2050 4900 +Wire Wire Line + 2650 4900 2650 4950 +Wire Wire Line + 2300 3400 2300 3450 +Wire Wire Line + 2000 3750 2000 3800 +Wire Wire Line + 2400 3400 2700 3400 +Wire Wire Line + 5450 1450 5450 1650 +Wire Wire Line + 5250 1450 5250 1550 +Wire Wire Line + 5600 2350 5600 2500 +Wire Wire Line + 6650 2350 6650 2500 +Wire Wire Line + 9550 2200 9700 2200 +Wire Wire Line + 4450 1450 4500 1450 +Wire Wire Line + 5550 1700 5550 1750 +Wire Wire Line + 2700 3400 2850 3400 $EndSCHEMATC diff --git a/F0-nolib/usbcdc/Makefile b/F0-nolib/usbcdc/Makefile index 92fccb8..fbd6873 100644 --- a/F0-nolib/usbcdc/Makefile +++ b/F0-nolib/usbcdc/Makefile @@ -8,10 +8,10 @@ MCU = F042x6 # hardware definitions DEFS += -DUSARTNUM=1 #DEFS += -DCHECK_TMOUT -#DEFS += -DEBUG +DEFS += -DEBUG # change this linking script depending on particular MCU model, # for example, if you have STM32F103VBT6, you should write: -LDSCRIPT = ld/stm32f042k.ld +LDSCRIPT = stm32f042k.ld INDEPENDENT_HEADERS= @@ -48,9 +48,9 @@ STARTUP = $(OBJDIR)/startup.o OBJS += $(STARTUP) DEPS := $(OBJS:.o=.d) -INC_DIR ?= ../../inc +INC_DIR ?= ../inc -INCLUDE := -I$(INC_DIR)/F0 -I$(INC_DIR)/cm +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm LIB_DIR := $(INC_DIR)/ld ############################################################################### diff --git a/F0-nolib/usbcdc/Readme.md b/F0-nolib/usbcdc/Readme.md index 1d58cb1..1e850f2 100644 --- a/F0-nolib/usbcdc/Readme.md +++ b/F0-nolib/usbcdc/Readme.md @@ -1,3 +1,23 @@ Simple code for CAN/USB development board Simultaneous work of USB CDC (PL2303 emulation) and CAN +Pinout: +PC13 - LED0 +PC14 - LED1 + +PB0..2 - Outputs 1..3 + +PB8, PB9 - CAN Rx/Tx + +PB14 - BRDaddr0 +PB15 - BRDaddr1 +PA8 - BRDaddr2 + +PA0 - V12 (external 12V voltage) +PA1 - V5 (5V voltage level) + +PA4, PA5 - Inputs 1,2 + +PA9, PA10 - USART1 Tx/Rx + +PA11. PA12 - USB DM/DP diff --git a/F0-nolib/usbcdc/can.c b/F0-nolib/usbcdc/can.c index 50f3cec..f499723 100644 --- a/F0-nolib/usbcdc/can.c +++ b/F0-nolib/usbcdc/can.c @@ -20,23 +20,12 @@ * MA 02110-1301, USA. * */ -#include // memcpy #include "can.h" #include "hardware.h" +#include "proto.h" #include "usart.h" -#define CMD_TOGGLE (0xDA) -#define CMD_BCAST (0xAD) -#define CAN_ID_MASK (0x7F8) -#define CAN_ID_PREFIX (0xAAA) -#define TARG_ID (CAN_ID_PREFIX & CAN_ID_MASK) -#define BCAST_ID (0x7F7) - -#define CAN_FLAG_GOTDUMMY (1) -// incoming message buffer size -#define CAN_INMESSAGE_SIZE (6) - -extern volatile uint32_t Tms; +#include // memcpy // circular buffer for received messages static CAN_message messages[CAN_INMESSAGE_SIZE]; @@ -44,7 +33,9 @@ static uint8_t first_free_idx = 0; // index of first empty cell static int8_t first_nonfree_idx = -1; // index of first data cell static uint16_t CANID = 0xFFFF; +#ifdef EBUG static uint32_t last_err_code = 0; +#endif static CAN_status can_status = CAN_STOP; static void can_process_fifo(uint8_t fifo_num); @@ -52,6 +43,9 @@ static void can_process_fifo(uint8_t fifo_num); CAN_status CAN_get_status(){ CAN_status st = can_status; // give overrun message only once +#ifdef EBUG + if(st == CAN_FIFO_OVERRUN) MSG("fifo 0 overrun\n"); +#endif if(st == CAN_FIFO_OVERRUN) can_status = CAN_READY; return st; } @@ -65,7 +59,7 @@ static int CAN_messagebuf_push(CAN_message *msg){ // need to roll? if(first_free_idx == CAN_INMESSAGE_SIZE) first_free_idx = 0; #ifdef EBUG - MSG("1st free: "); usart_putchar('0' + first_free_idx); newline(); + MSG("1st free: "); usart_putchar('0' + first_free_idx); NL(); #endif return 0; } @@ -74,7 +68,7 @@ static int CAN_messagebuf_push(CAN_message *msg){ CAN_message *CAN_messagebuf_pop(){ if(first_nonfree_idx < 0) return NULL; #ifdef EBUG - MSG("read from idx "); usart_putchar('0' + first_nonfree_idx); newline(); + MSG("read from idx "); usart_putchar('0' + first_nonfree_idx); NL(); #endif CAN_message *msg = &messages[first_nonfree_idx++]; if(first_nonfree_idx == CAN_INMESSAGE_SIZE) first_nonfree_idx = 0; @@ -162,14 +156,14 @@ void CAN_setup(){ } void can_proc(){ - if(last_err_code){ #ifdef EBUG + if(last_err_code){ MSG("Error, ESR="); printu(last_err_code); - newline(); -#endif + NL(); last_err_code = 0; } +#endif // check for messages in FIFO0 & FIFO1 if(CAN->RF0R & CAN_RF0R_FMP0){ can_process_fifo(0); @@ -178,7 +172,29 @@ void can_proc(){ can_process_fifo(1); } if(CAN->ESR & (CAN_ESR_BOFF | CAN_ESR_EPVF | CAN_ESR_EWGF)){ // much errors - restart CAN BUS - MSG("bus-off, restarting\n"); + switchbuff(0); + SEND("\nToo much errors, restarting!\n"); + SEND("Receive error counter: "); + printu((CAN->ESR & CAN_ESR_REC)>>24); + SEND("\nTransmit error counter: "); + printu((CAN->ESR & CAN_ESR_TEC)>>16); + SEND("\nLast error code: "); + int lec = (CAN->ESR & CAN_ESR_LEC) >> 4; + const char *errmsg = "No"; + switch(lec){ + case 1: errmsg = "Stuff"; break; + case 2: errmsg = "Form"; break; + case 3: errmsg = "Ack"; break; + case 4: errmsg = "Bit recessive"; break; + case 5: errmsg = "Bit dominant"; break; + case 6: errmsg = "CRC"; break; + case 7: errmsg = "(set by software)"; break; + } + SEND(errmsg); SEND(" error\n"); + if(CAN->ESR & CAN_ESR_BOFF) SEND("Bus off"); + if(CAN->ESR & CAN_ESR_EPVF) SEND("Passive error limit"); + if(CAN->ESR & CAN_ESR_EWGF) SEND("Error counter limit"); + NL(); // request abort for all mailboxes CAN->TSR |= CAN_TSR_ABRQ0 | CAN_TSR_ABRQ1 | CAN_TSR_ABRQ2; // reset CAN bus @@ -193,23 +209,23 @@ void can_proc(){ if(esr != CAN->ESR || msr != msr_now || tsr != CAN->TSR){ MSG("Timestamp: "); printu(Tms); - newline(); + NL(); } if((CAN->ESR) != esr){ usart_putchar(((CAN->ESR & CAN_ESR_BOFF) != 0) + '0'); esr = CAN->ESR; MSG("CAN->ESR: "); - printuhex(esr); newline(); + printuhex(esr); NL(); } if(msr_now != msr){ msr = msr_now; MSG("CAN->MSR & 0xf: "); - printuhex(msr); newline(); + printuhex(msr); NL(); } if(CAN->TSR != tsr){ tsr = CAN->TSR; MSG("CAN->TSR: "); - printuhex(tsr); newline(); + printuhex(tsr); NL(); } #endif } @@ -219,9 +235,6 @@ CAN_status can_send(uint8_t *msg, uint8_t len, uint16_t target_id){ // check first free mailbox if(CAN->TSR & (CAN_TSR_TME)){ mailbox = (CAN->TSR & CAN_TSR_CODE) >> 24; - #ifdef EBUG - MSG("select "); usart_putchar('0'+mailbox); SEND(" mailbox\n"); - #endif }else{ // no free mailboxes return CAN_BUSY; } @@ -263,11 +276,11 @@ void can_send_dummy(){ uint8_t msg = CMD_TOGGLE; if(CAN_OK != can_send(&msg, 1, TARG_ID)) SEND("Bus busy!\n"); MSG("CAN->MSR: "); - printuhex(CAN->MSR); newline(); + printuhex(CAN->MSR); NL(); MSG("CAN->TSR: "); - printuhex(CAN->TSR); newline(); + printuhex(CAN->TSR); NL(); MSG("CAN->ESR: "); - printuhex(CAN->ESR); newline(); + printuhex(CAN->ESR); NL(); } void can_send_broadcast(){ @@ -284,7 +297,7 @@ static void can_process_fifo(uint8_t fifo_num){ MSG("Receive, RDTR="); #ifdef EBUG printuhex(box->RDTR); - newline(); + NL(); #endif // read all while(*RFxR & CAN_RF0R_FMP0){ // amount of messages pending @@ -337,15 +350,14 @@ void cec_can_isr(){ CAN->RF1R &= ~CAN_RF1R_FOVR1; can_status = CAN_FIFO_OVERRUN; } - #ifdef EBUG - if(can_status == CAN_FIFO_OVERRUN) MSG("fifo 0 overrun\n"); - #endif if(CAN->MSR & CAN_MSR_ERRI){ // Error CAN->MSR &= ~CAN_MSR_ERRI; // request abort for problem mailbox if(CAN->TSR & CAN_TSR_TERR0) CAN->TSR |= CAN_TSR_ABRQ0; if(CAN->TSR & CAN_TSR_TERR1) CAN->TSR |= CAN_TSR_ABRQ1; if(CAN->TSR & CAN_TSR_TERR2) CAN->TSR |= CAN_TSR_ABRQ2; +#ifdef EBUG last_err_code = CAN->ESR; +#endif } } diff --git a/F0-nolib/usbcdc/can.h b/F0-nolib/usbcdc/can.h index 9759c8f..50f8206 100644 --- a/F0-nolib/usbcdc/can.h +++ b/F0-nolib/usbcdc/can.h @@ -26,6 +26,21 @@ #include "hardware.h" +// simple 1-byte commands +#define CMD_TOGGLE (0xDA) +#define CMD_BCAST (0xAD) +// mask heading 8 bits of can ID +#define CAN_ID_MASK (0x7F8) +// prefix to make ID from any number (0..7) +#define CAN_ID_PREFIX (0xAAA) +// "target" ID: num=0 +#define TARG_ID (CAN_ID_PREFIX & CAN_ID_MASK) +// "broadcast" ID: all ones +#define BCAST_ID (0x7FF) + +// incoming message buffer size +#define CAN_INMESSAGE_SIZE (8) + typedef struct{ uint8_t data[8]; uint8_t length; diff --git a/F0-nolib/usbcdc/hardware.c b/F0-nolib/usbcdc/hardware.c index 60cb1b5..37dfe24 100644 --- a/F0-nolib/usbcdc/hardware.c +++ b/F0-nolib/usbcdc/hardware.c @@ -41,3 +41,32 @@ void gpio_setup(void){ pin_set(LED0_port, LED0_pin); // clear LEDs pin_set(LED1_port, LED1_pin); } + +void iwdg_setup(){ + uint32_t tmout = 16000000; + /* Enable the peripheral clock RTC */ + /* (1) Enable the LSI (40kHz) */ + /* (2) Wait while it is not ready */ + RCC->CSR |= RCC_CSR_LSION; /* (1) */ + while((RCC->CSR & RCC_CSR_LSIRDY) != RCC_CSR_LSIRDY){if(--tmout == 0) break;} /* (2) */ + /* Configure IWDG */ + /* (1) Activate IWDG (not needed if done in option bytes) */ + /* (2) Enable write access to IWDG registers */ + /* (3) Set prescaler by 64 (1.6ms for each tick) */ + /* (4) Set reload value to have a rollover each 2s */ + /* (5) Check if flags are reset */ + /* (6) Refresh counter */ + IWDG->KR = IWDG_START; /* (1) */ + IWDG->KR = IWDG_WRITE_ACCESS; /* (2) */ + IWDG->PR = IWDG_PR_PR_1; /* (3) */ + IWDG->RLR = 1250; /* (4) */ + tmout = 16000000; + while(IWDG->SR){if(--tmout == 0) break;} /* (5) */ + IWDG->KR = IWDG_REFRESH; /* (6) */ +} + +// pause in milliseconds for some purposes +void pause_ms(uint32_t pause){ + uint32_t Tnxt = Tms + pause; + while(Tms < Tnxt) nop(); +} diff --git a/F0-nolib/usbcdc/hardware.h b/F0-nolib/usbcdc/hardware.h index 56f152e..1511cff 100644 --- a/F0-nolib/usbcdc/hardware.h +++ b/F0-nolib/usbcdc/hardware.h @@ -24,7 +24,7 @@ #ifndef __HARDWARE_H__ #define __HARDWARE_H__ -#include "stm32f0.h" +#include #define CONCAT(a,b) a ## b #define STR_HELPER(s) #s @@ -49,6 +49,11 @@ // CAN address - PB14(0), PB15(1), PA8(2) #define READ_CAN_INV_ADDR() (((GPIOA->IDR & (1<<8))>>6)|((GPIOB->IDR & (3<<14))>>14)) + +extern volatile uint32_t Tms; + void gpio_setup(void); +void iwdg_setup(); +void pause_ms(uint32_t pause); #endif // __HARDWARE_H__ diff --git a/F0-nolib/usbcdc/main.c b/F0-nolib/usbcdc/main.c index 96426f5..f4f0a52 100644 --- a/F0-nolib/usbcdc/main.c +++ b/F0-nolib/usbcdc/main.c @@ -19,9 +19,10 @@ * MA 02110-1301, USA. */ -#include "hardware.h" -#include "usart.h" #include "can.h" +#include "hardware.h" +#include "proto.h" +#include "usart.h" #include "usb.h" #include "usb_lib.h" @@ -32,55 +33,88 @@ void sys_tick_handler(void){ ++Tms; } -void iwdg_setup(){ - uint32_t tmout = 16000000; - /* Enable the peripheral clock RTC */ - /* (1) Enable the LSI (40kHz) */ - /* (2) Wait while it is not ready */ - RCC->CSR |= RCC_CSR_LSION; /* (1) */ - while((RCC->CSR & RCC_CSR_LSIRDY) != RCC_CSR_LSIRDY){if(--tmout == 0) break;} /* (2) */ - /* Configure IWDG */ - /* (1) Activate IWDG (not needed if done in option bytes) */ - /* (2) Enable write access to IWDG registers */ - /* (3) Set prescaler by 64 (1.6ms for each tick) */ - /* (4) Set reload value to have a rollover each 2s */ - /* (5) Check if flags are reset */ - /* (6) Refresh counter */ - IWDG->KR = IWDG_START; /* (1) */ - IWDG->KR = IWDG_WRITE_ACCESS; /* (2) */ - IWDG->PR = IWDG_PR_PR_1; /* (3) */ - IWDG->RLR = 1250; /* (4) */ - tmout = 16000000; - while(IWDG->SR){if(--tmout == 0) break;} /* (5) */ - IWDG->KR = IWDG_REFRESH; /* (6) */ +/* +// usb getline +static char *get_USB(){ + static char tmpbuf[512], *curptr = tmpbuf; + static int rest = 511; + uint8_t x = USB_receive((uint8_t*)curptr); + curptr[x] = 0; + if(!x) return NULL; + if(curptr[x-1] == '\n'){ + curptr = tmpbuf; + rest = 511; + return tmpbuf; + } + curptr += x; rest -= x; + if(rest <= 0){ // buffer overflow + curptr = tmpbuf; + rest = 511; + } + return NULL; +}*/ + +#define USBBUF 63 +// usb getline +static char *get_USB(){ + static char tmpbuf[USBBUF+1], *curptr = tmpbuf; + static int rest = USBBUF; + uint8_t x = USB_receive((uint8_t*)curptr); + if(!x) return NULL; + curptr[x] = 0; + if(x == 1 && *curptr == 0x7f){ // backspace + if(curptr > tmpbuf){ + --curptr; + USND("\b \b"); + } + return NULL; + } + USB_sendstr(curptr); // echo + if(curptr[x-1] == '\n'){ // || curptr[x-1] == '\r'){ + curptr = tmpbuf; + rest = USBBUF; + // omit empty lines + if(tmpbuf[0] == '\n') return NULL; + // and wrong empty lines + if(tmpbuf[0] == '\r' && tmpbuf[1] == '\n') return NULL; + return tmpbuf; + } + curptr += x; rest -= x; + if(rest <= 0){ // buffer overflow + usart_send("\nUSB buffer overflow!\n"); transmit_tbuf(); + curptr = tmpbuf; + rest = USBBUF; + } + return NULL; } + + int main(void){ uint32_t lastT = 0; uint8_t ctr, len; CAN_message *can_mesg; - int L; char *txt; sysreset(); SysTick_Config(6000, 1); gpio_setup(); usart_setup(); - //iwdg_setup(); readCANID(); CAN_setup(); + switchbuff(0); SEND("Greetings! My address is "); printuhex(getCANID()); - newline(); + NL(); if(RCC->CSR & RCC_CSR_IWDGRSTF){ // watchdog reset occured - SEND("WDGRESET=1\n"); + SEND("WDGRESET=1\n"); NL(); } if(RCC->CSR & RCC_CSR_SFTRSTF){ // software reset occured - SEND("SOFTRESET=1\n"); + SEND("SOFTRESET=1\n"); NL(); } RCC->CSR |= RCC_CSR_RMVF; // remove reset flags - + iwdg_setup(); USB_setup(); while (1){ @@ -93,83 +127,28 @@ int main(void){ can_proc(); usb_proc(); if(CAN_get_status() == CAN_FIFO_OVERRUN){ - SEND("CAN bus fifo overrun occured!\n"); + SEND("CAN bus fifo overrun occured!\n"); NL(); } can_mesg = CAN_messagebuf_pop(); if(can_mesg){ // new data in buff len = can_mesg->length; + switchbuff(0); SEND("got message, len: "); usart_putchar('0' + len); SEND(", data: "); for(ctr = 0; ctr < len; ++ctr){ printuhex(can_mesg->data[ctr]); usart_putchar(' '); } - newline(); + NL(); } if(usartrx()){ // usart1 received data, store in in buffer - L = usart_getline(&txt); - char _1st = txt[0]; - if(L == 2 && txt[1] == '\n'){ - L = 0; - switch(_1st){ - case 'f': - transmit_tbuf(); - break; - case 'B': - can_send_broadcast(); - break; - case 'C': - can_send_dummy(); - break; - case 'G': - SEND("Can address: "); - printuhex(getCANID()); - newline(); - break; - case 'R': - SEND("Soft reset\n"); - NVIC_SystemReset(); - break; - case 'S': - CAN_reinit(); - SEND("Can address: "); - printuhex(getCANID()); - newline(); - break; - case 'T': - SEND("Time (ms): "); - printu(Tms); - newline(); - break; - case 'U': - USB_send("Test string for USB; a very long string that don't fit into one 64-byte buffer, what will be with it?\n"); - break; - case 'W': - SEND("Wait for reboot\n"); - while(1){nop();}; - break; - default: // help - SEND( - "'f' - flush UART buffer\n" - "'B' - send broadcast dummy byte\n" - "'C' - send dummy byte over CAN\n" - "'G' - get CAN address\n" - "'R' - software reset\n" - "'S' - reinit CAN (with new address)\n" - "'T' - gen time from start (ms)" - "'U' - send test string over USB\n" - "'W' - test watchdog\n" - ); - break; - } - } - transmit_tbuf(); + usart_getline(&txt); + IWDG->KR = IWDG_REFRESH; + cmd_parser(txt, 0); } - if(L){ // text waits for sending - txt[L] = 0; - usart_send(txt); - USB_send(txt); - L = 0; + if((txt = get_USB())){ + IWDG->KR = IWDG_REFRESH; + cmd_parser(txt, 1); } } return 0; diff --git a/F0-nolib/usbcdc/proto.c b/F0-nolib/usbcdc/proto.c new file mode 100644 index 0000000..4702c96 --- /dev/null +++ b/F0-nolib/usbcdc/proto.c @@ -0,0 +1,284 @@ +/* + * geany_encoding=koi8-r + * proto.c + * + * Copyright 2018 Edward V. Emelianov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ +#include "can.h" +#include "hardware.h" +#include "proto.h" +#include "usart.h" +#include "usb.h" + +#include // strlen + +extern volatile uint8_t canerror; + +static char buff[UARTBUFSZ+1], *bptr = buff; +static uint8_t blen = 0, USBcmd = 0; + +void sendbuf(){ + IWDG->KR = IWDG_REFRESH; + if(blen == 0) return; + *bptr = 0; + if(USBcmd) USB_sendstr(buff); + else{ + usart_send(buff); + transmit_tbuf(); + } + bptr = buff; + blen = 0; +} + +void switchbuff(uint8_t isUSB){ + USBcmd = isUSB; +} + +/* +void memcpy(void *dest, const void *src, int len){ + while(len > 4){ + *(uint32_t*)dest++ = *(uint32_t*)src++; + len -= 4; + } + while(len--) *(uint8_t*)dest++ = *(uint8_t*)src++; +} + +int strlen(const char *txt){ + int l = 0; + while(*txt++) ++l; + return l; +}*/ + +void bufputchar(char ch){ + if(blen > UARTBUFSZ-1){ + sendbuf(); + } + *bptr++ = ch; + ++blen; +} + +void addtobuf(const char *txt){ + IWDG->KR = IWDG_REFRESH; + while(*txt) bufputchar(*txt++); +} + +char *omit_spaces(char *buf){ + while(*buf){ + if(*buf > ' ') break; + ++buf; + } + return buf; +} + +// THERE'S NO OVERFLOW PROTECTION IN NUMBER READ PROCEDURES! +// read decimal number +static char *getdec(char *buf, uint32_t *N){ + uint32_t num = 0; + while(*buf){ + char c = *buf; + if(c < '0' || c > '9'){ + break; + } + num *= 10; + num += c - '0'; + ++buf; + } + *N = num; + return buf; +} +// read hexadecimal number (without 0x prefix!) +static char *gethex(char *buf, uint32_t *N){ + uint32_t num = 0; + while(*buf){ + char c = *buf; + uint8_t M = 0; + if(c >= '0' && c <= '9'){ + M = '0'; + }else if(c >= 'A' && c <= 'F'){ + M = 'A' - 10; + }else if(c >= 'a' && c <= 'f'){ + M = 'a' - 10; + } + if(M){ + num <<= 4; + num += c - M; + }else{ + break; + } + ++buf; + } + *N = num; + return buf; +} +// read binary number (without 0b prefix!) +static char *getbin(char *buf, uint32_t *N){ + uint32_t num = 0; + while(*buf){ + char c = *buf; + if(c < '0' || c > '1'){ + break; + } + num <<= 1; + if(c == '1') num |= 1; + ++buf; + } + *N = num; + return buf; +} + +/** + * @brief getnum - read uint32_t from string (dec, hex or bin: 127, 0x7f, 0b1111111) + * @param buf - buffer with number and so on + * @param N - the number read + * @return pointer to first non-number symbol in buf (if it is == buf, there's no number) + */ +char *getnum(char *txt, uint32_t *N){ + if(*txt == '0'){ + if(txt[1] == 'x' || txt[1] == 'X') return gethex(txt+2, N); + if(txt[1] == 'b' || txt[1] == 'B') return getbin(txt+2, N); + } + return getdec(txt, N); +} + + +// send command, format: ID (hex/bin/dec) data bytes (up to 8 bytes, space-delimeted) +void sendCANcommand(char *txt){ + SEND("CAN command with arguments:\n"); + uint32_t N; + char *n; + do{ + txt = omit_spaces(txt); + n = getnum(txt, &N); + if(txt == n) break; + printu(N); SEND(", hex: "); + printuhex(N); newline(); + txt = n; + }while(1); + if(*n){ + SEND("\nThe rest: "); + SEND(n); + } + newline(); + sendbuf(); +} + +/** + * @brief cmd_parser - command parsing + * @param txt - buffer with commands & data + * @param isUSB - == 1 if data got from USB + */ +void cmd_parser(char *txt, uint8_t isUSB){ + USBcmd = isUSB; + //int16_t L = (int16_t)strlen(txt); + char _1st = txt[0]; + /* + * parse long commands here + */ + if(_1st == 's' || _1st == 'S'){ + sendCANcommand(txt + 1); + return; + } + if(txt[1] != '\n') *txt = '?'; // help for wrong message length + switch(_1st){ + case 'f': + transmit_tbuf(); + break; + case 'B': + can_send_broadcast(); + break; + case 'C': + can_send_dummy(); + break; + case 'G': + SEND("Can address: "); + printuhex(getCANID()); + newline(); + break; + case 'I': + CAN_reinit(); + SEND("Can address: "); + printuhex(getCANID()); + newline(); + break; + case 'R': + SEND("Soft reset\n"); + sendbuf(); + pause_ms(5); // a little pause to transmit data + NVIC_SystemReset(); + break; + case 'T': + SEND("Time (ms): "); + printu(Tms); + newline(); + break; + case 'U': + USND("Test string for USB; a very long string that don't fit into one 64-byte buffer, what will be with it?\n"); + break; + case 'W': + SEND("Test watchdog\n"); + sendbuf(); + pause_ms(5); // a little pause to transmit data + while(1){nop();} + break; + default: // help + SEND( + "'B' - send broadcast dummy byte\n" + "'C' - send dummy byte over CAN\n" + "'f' - flush UART buffer\n" + "'G' - get CAN address\n" + "'I' - reinit CAN (with new address)\n" + "'R' - software reset\n" + "'s/S' - send data over CAN: s ID byte0 .. byteN\n" + "'T' - gen time from start (ms)\n" + "'U' - send test string over USB\n" + "'W' - test watchdog\n" + ); + break; + } + sendbuf(); +} + +// print 32bit unsigned int +void printu(uint32_t val){ + char buf[11], *bufptr = &buf[10]; + *bufptr = 0; + if(!val){ + *(--bufptr) = '0'; + }else{ + while(val){ + *(--bufptr) = val % 10 + '0'; + val /= 10; + } + } + addtobuf(bufptr); +} + +// print 32bit unsigned int as hex +void printuhex(uint32_t val){ + addtobuf("0x"); + uint8_t *ptr = (uint8_t*)&val + 3; + int i, j; + for(i = 0; i < 4; ++i, --ptr){ + for(j = 1; j > -1; --j){ + uint8_t half = (*ptr >> (4*j)) & 0x0f; + if(half < 10) bufputchar(half + '0'); + else bufputchar(half - 10 + 'a'); + } + } +} diff --git a/F0-nolib/usbcdc/proto.h b/F0-nolib/usbcdc/proto.h new file mode 100644 index 0000000..e41b5a1 --- /dev/null +++ b/F0-nolib/usbcdc/proto.h @@ -0,0 +1,56 @@ +/* + * geany_encoding=koi8-r + * proto.h + * + * Copyright 2018 Edward V. Emelianov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ +#pragma once +#ifndef __PROTO_H__ +#define __PROTO_H__ + +#include "stm32f0.h" +#include "hardware.h" + +// macro for static strings +#define SEND(str) do{addtobuf(str);}while(0) + +#ifdef EBUG +#define MSG(str) do{addtobuf(__FILE__ " (L" STR(__LINE__) "): " str);}while(0) +#else +#define MSG(str) +#endif + +#define newline() do{bufputchar('\n');}while(0) +// newline with buffer sending over USART +#define NL() do{bufputchar('\n'); switchbuff(0); sendbuf();}while(0) + +void cmd_parser(char *buf, uint8_t isUSB); +void addtobuf(const char *txt); +void bufputchar(char ch); +void printu(uint32_t val); +void printuhex(uint32_t val); +void sendbuf(); +void switchbuff(uint8_t isUSB); + +char *omit_spaces(char *buf); +char *getnum(char *buf, uint32_t *N); + +//int strlen(const char *txt); +//void memcpy(void *dest, const void *src, int len); +#endif // __PROTO_H__ diff --git a/F0-nolib/usbcdc/usart.c b/F0-nolib/usbcdc/usart.c index ccc8d63..6a21d35 100644 --- a/F0-nolib/usbcdc/usart.c +++ b/F0-nolib/usbcdc/usart.c @@ -23,19 +23,19 @@ #include "usart.h" #include -extern volatile uint32_t Tms; static volatile int idatalen[2] = {0,0}; // received data line length (including '\n') static volatile int odatalen[2] = {0,0}; -volatile int linerdy = 0, // received data ready - dlen = 0, // length of data (including '\n') in current buffer - bufovr = 0, // input buffer overfull - txrdy = 1 // transmission done + +static volatile int dlen = 0; // length of data (including '\n') in current buffer +volatile int linerdy = 0, // received data ready + bufovr = 0, // input buffer overfull + txrdy = 1 // transmission done ; -int rbufno = 0, tbufno = 0; // current rbuf/tbuf numbers -static char rbuf[2][UARTBUFSZI], tbuf[2][UARTBUFSZO]; // receive & transmit buffers +static int rbufno = 0, tbufno = 0; // current rbuf/tbuf numbers +static char rbuf[2][UARTBUFSZ], tbuf[2][UARTBUFSZ]; // receive & transmit buffers static char *recvdata = NULL; /** @@ -77,31 +77,25 @@ void transmit_tbuf(){ } void usart_putchar(const char ch){ - if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + if(odatalen[tbufno] == UARTBUFSZ) transmit_tbuf(); tbuf[tbufno][odatalen[tbufno]++] = ch; } void usart_send(const char *str){ uint32_t x = 512; while(*str && --x){ - if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + if(odatalen[tbufno] == UARTBUFSZ) transmit_tbuf(); tbuf[tbufno][odatalen[tbufno]++] = *str++; } } void usart_sendn(const char *str, uint8_t L){ for(uint8_t i = 0; i < L; ++i){ - if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + if(odatalen[tbufno] == UARTBUFSZ) transmit_tbuf(); tbuf[tbufno][odatalen[tbufno]++] = *str++; } } -void newline(){ - usart_putchar('\n'); - transmit_tbuf(); -} - - void usart_setup(){ // Nucleo's USART2 connected to VCP proxy of st-link uint32_t tmout = 16000000; @@ -181,12 +175,14 @@ void usart1_isr(){ #endif // read RDR clears flag uint8_t rb = USARTX->RDR; - if(idatalen[rbufno] < UARTBUFSZI){ // put next char into buf + USARTX->TDR = rb; + if(idatalen[rbufno] < UARTBUFSZ){ // put next char into buf rbuf[rbufno][idatalen[rbufno]++] = rb; if(rb == '\n'){ // got newline - line ready linerdy = 1; dlen = idatalen[rbufno]; recvdata = rbuf[rbufno]; + recvdata[dlen] = 0; // prepare other buffer rbufno = !rbufno; idatalen[rbufno] = 0; @@ -205,61 +201,6 @@ void usart1_isr(){ } } -// print 32bit unsigned int -void printu(uint32_t val){ - char bufa[11], bufb[10]; - int l = 0, bpos = 0; - if(!val){ - bufa[0] = '0'; - l = 1; - }else{ - while(val){ - bufb[l++] = val % 10 + '0'; - val /= 10; - } - int i; - bpos += l; - for(i = 0; i < l; ++i){ - bufa[--bpos] = bufb[i]; - } - } - bufa[l + bpos] = 0; - usart_send(bufa); -} - -// print 32bit unsigned int as hex -void printuhex(uint32_t val){ - usart_send("0x"); - uint8_t *ptr = (uint8_t*)&val + 3, start = 1; - int i, j; - for(i = 0; i < 4; ++i, --ptr){ - if(!*ptr && start) continue; - for(j = 1; j > -1; --j){ - start = 0; - register uint8_t half = (*ptr >> (4*j)) & 0x0f; - if(half < 10) usart_putchar(half + '0'); - else usart_putchar(half - 10 + 'a'); - } - } - if(start){ - usart_putchar('0'); - usart_putchar('0'); - } -} - -// dump memory buffer -void hexdump(uint8_t *arr, uint16_t len){ - for(uint16_t l = 0; l < len; ++l, ++arr){ - for(int16_t j = 1; j > -1; --j){ - register uint8_t half = (*arr >> (4*j)) & 0x0f; - if(half < 10) usart_putchar(half + '0'); - else usart_putchar(half - 10 + 'a'); - } - if(l % 16 == 15) usart_putchar('\n'); - else if(l & 1) usart_putchar(' '); - } -} - #if USARTNUM == 2 void dma1_channel4_5_isr(){ if(DMA1->ISR & DMA_ISR_TCIF4){ // Tx diff --git a/F0-nolib/usbcdc/usart.h b/F0-nolib/usbcdc/usart.h index fc9c5ff..3574449 100644 --- a/F0-nolib/usbcdc/usart.h +++ b/F0-nolib/usbcdc/usart.h @@ -25,22 +25,12 @@ #include "hardware.h" // input and output buffers size -#define UARTBUFSZI (32) -#define UARTBUFSZO (512) +#define UARTBUFSZ (64) // timeout between data bytes #ifndef TIMEOUT_MS #define TIMEOUT_MS (1500) #endif -// macro for static strings -#define SEND(str) usart_send(str) - -#ifdef EBUG -#define MSG(str) do{SEND(__FILE__ " (L" STR(__LINE__) "): " str);}while(0) -#else -#define MSG(str) -#endif - #define usartrx() (linerdy) #define usartovr() (bufovr) @@ -51,10 +41,7 @@ void usart_setup(); int usart_getline(char **line); void usart_send(const char *str); void usart_sendn(const char *str, uint8_t L); -void newline(); void usart_putchar(const char ch); -void printu(uint32_t val); -void printuhex(uint32_t val); void hexdump(uint8_t *arr, uint16_t len); #endif // __USART_H__ diff --git a/F0-nolib/usbcdc/usb.c b/F0-nolib/usbcdc/usb.c index 33ffd58..5727abf 100644 --- a/F0-nolib/usbcdc/usb.c +++ b/F0-nolib/usbcdc/usb.c @@ -1,6 +1,6 @@ /* * geany_encoding=koi8-r - * usb.c + * usb.c - base functions for different USB types * * Copyright 2018 Edward V. Emelianov * @@ -25,46 +25,31 @@ #include "usb_lib.h" #include "usart.h" - - -static uint8_t buffer[BUFFSIZE+1]; -static uint8_t len, rcvflag = 0; +static volatile uint8_t tx_succesfull = 1; +static volatile uint8_t rxNE = 0; // interrupt IN handler (never used?) -static uint16_t EP1_Handler(ep_t ep){ - if (ep.rx_flag){ - EP_Read(1, buffer); - ep.status = SET_VALID_TX(ep.status); - ep.status = KEEP_STAT_RX(ep.status); - } else - if (ep.tx_flag){ - ep.status = SET_VALID_RX(ep.status); - ep.status = SET_STALL_TX(ep.status); - } - return ep.status; +static void EP1_Handler(){ + uint16_t epstatus = KEEP_DTOG(USB->EPnR[1]); + if(RX_FLAG(epstatus)) epstatus = (epstatus & ~USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_RX; // set valid RX + else epstatus = epstatus & ~(USB_EPnR_STAT_TX|USB_EPnR_STAT_RX); + // clear CTR + epstatus = (epstatus & ~(USB_EPnR_CTR_RX|USB_EPnR_CTR_TX)); + USB->EPnR[1] = epstatus; } -// data IN/OUT handler -static uint16_t EP2_Handler(ep_t ep){ - if(ep.rx_flag){ - if(ep.rx_cnt > 0 && ep.rx_cnt < BUFFSIZE){ - rcvflag = 1; - len = EP_Read(2, buffer); - buffer[len] = 0; - #ifdef EBUG - MSG("read: "); - if(len) SEND((char*)buffer); - #endif - } - // end of transaction: clear DTOGs - ep.status = CLEAR_DTOG_RX(ep.status); - ep.status = CLEAR_DTOG_TX(ep.status); - ep.status = SET_STALL_TX(ep.status); - }else if (ep.tx_flag){ - ep.status = KEEP_STAT_TX(ep.status); - } - ep.status = SET_VALID_RX(ep.status); - return ep.status; +// data IN/OUT handlers +static void transmit_Handler(){ // EP3IN + tx_succesfull = 1; + uint16_t epstatus = KEEP_DTOG_STAT(USB->EPnR[3]); + // clear CTR keep DTOGs & STATs + USB->EPnR[3] = (epstatus & ~(USB_EPnR_CTR_TX)); // clear TX ctr +} + +static void receive_Handler(){ // EP2OUT + rxNE = 1; + uint16_t epstatus = KEEP_DTOG_STAT(USB->EPnR[2]); + USB->EPnR[2] = (epstatus & ~(USB_EPnR_CTR_RX)); // clear RX ctr } void USB_setup(){ @@ -80,50 +65,117 @@ void USB_setup(){ CRS->CR |= CRS_CR_CEN; // enable freq counter & block CRS->CFGR as read-only RCC->CFGR |= RCC_CFGR_SW; // allow RESET and CTRM interrupts - USB -> CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM; + USB->CNTR = USB_CNTR_RESETM | USB_CNTR_WKUPM; // clear flags - USB -> ISTR = 0; + USB->ISTR = 0; // and activate pullup - USB -> BCDR |= USB_BCDR_DPPU; + USB->BCDR |= USB_BCDR_DPPU; NVIC_EnableIRQ(USB_IRQn); } -void usb_proc(){ - static int8_t usbON = 0; - if(USB_GetState() == USB_CONFIGURE_STATE){ // USB configured - activate other endpoints - if(!usbON){ // endpoints not activated - MSG("Configured; activate other endpoints\n"); - // make new BULK endpoint - // Buffer have 1024 bytes, but last 256 we use for CAN bus - // first free is 64; 768 - CAN data - // free: 64 128 192 256 320 384 448 512 576 640 704 - // (first 192 free bytes are for EP0) - EP_Init(1, EP_TYPE_INTERRUPT, 192, 192, EP1_Handler); - EP_Init(2, EP_TYPE_BULK, 256, 256, EP2_Handler); // OUT - receive data - EP_Init(3, EP_TYPE_BULK, 320, 320, EP2_Handler); // IN - transmit data - usbON = 1; - }else{ - if(rcvflag){ - /* - * don't process received data here: if it would come too fast you will loose a part - * It would be a good idea to collect incoming data in greater buffer and process it - * later (EX: echo "text" > /dev/ttyUSB1 will split into two writings! - */ - rcvflag = 0; - } - if(SETLINECODING()){ - SEND("got new linecoding"); - CLRLINECODING(); - } - } - }else{ - usbON = 0; + +static int usbwr(const uint8_t *buf, uint16_t l){ + uint32_t ctra = 1000000; + while(--ctra && tx_succesfull == 0){ + IWDG->KR = IWDG_REFRESH; + } + tx_succesfull = 0; + EP_Write(3, buf, l); + ctra = 1000000; + while(--ctra && tx_succesfull == 0){ + IWDG->KR = IWDG_REFRESH; + } + if(tx_succesfull == 0){usbON = 0; return 1;} // usb is OFF? + return 0; +} + +static uint8_t usbbuff[USB_TXBUFSZ-1]; // temporary buffer (63 - to prevent need of ZLP) +static uint8_t buflen = 0; // amount of symbols in usbbuff + +// send next up to 63 bytes of data in usbbuff +static void send_next(){ + if(!buflen || !tx_succesfull) return; + tx_succesfull = 0; + EP_Write(3, usbbuff, buflen); + buflen = 0; +} + +// unblocking sending - just fill a buffer +void USB_send(const uint8_t *buf, uint16_t len){ + if(!usbON || !len) return; + if(len > USB_TXBUFSZ-1 - buflen){ + usbwr(usbbuff, buflen); + buflen = 0; + } + if(len > USB_TXBUFSZ-1){ + USB_send_blk(buf, len); + return; + } + while(len--) usbbuff[buflen++] = *buf++; +} + +// send zero-terminated string +void USB_sendstr(const char *str){ + uint16_t l = 0; + const char *ptr = str; + while(*ptr++) ++l; + USB_send((uint8_t*)str, l); +} + +// blocking sending +void USB_send_blk(const uint8_t *buf, uint16_t len){ + if(!usbON || !len) return; // USB disconnected + if(buflen){ + usbwr(usbbuff, buflen); + buflen = 0; + } + int needzlp = 0; + while(len){ + if(len == USB_TXBUFSZ) needzlp = 1; + uint16_t s = (len > USB_TXBUFSZ) ? USB_TXBUFSZ : len; + if(usbwr(buf, s)) return; + len -= s; + buf += s; + } + if(needzlp){ + usbwr(NULL, 0); } } -void USB_send(char *buf){ - uint16_t l = 0; - char *p = buf; - while(*p++) ++l; - EP_Write(3, (uint8_t*)buf, l); +void usb_proc(){ + switch(USB_Dev.USB_Status){ + case USB_STATE_CONFIGURED: + // make new BULK endpoint + // Buffer have 1024 bytes, but last 256 we use for CAN bus (30.2 of RM: USB main features) + EP_Init(1, EP_TYPE_INTERRUPT, USB_EP1BUFSZ, 0, EP1_Handler); // IN1 - transmit + EP_Init(2, EP_TYPE_BULK, 0, USB_RXBUFSZ, receive_Handler); // OUT2 - receive data + EP_Init(3, EP_TYPE_BULK, USB_TXBUFSZ, 0, transmit_Handler); // IN3 - transmit data + USB_Dev.USB_Status = USB_STATE_CONNECTED; + break; + case USB_STATE_DEFAULT: + case USB_STATE_ADDRESSED: + if(usbON){ + usbON = 0; + } + break; + default: // USB_STATE_CONNECTED - send next data portion + if(!usbON) return; + send_next(); + } } + +/** + * @brief USB_receive + * @param buf (i) - buffer[64] for received data + * @return amount of received bytes + */ +uint8_t USB_receive(uint8_t *buf){ + if(!usbON || !rxNE) return 0; + uint8_t sz = EP_Read(2, buf); + uint16_t epstatus = KEEP_DTOG(USB->EPnR[2]); + // keep stat_tx & set ACK rx + USB->EPnR[2] = (epstatus & ~(USB_EPnR_STAT_TX)) ^ USB_EPnR_STAT_RX; + rxNE = 0; + return sz; +} + diff --git a/F0-nolib/usbcdc/usb.h b/F0-nolib/usbcdc/usb.h index c977ca4..c888a57 100644 --- a/F0-nolib/usbcdc/usb.h +++ b/F0-nolib/usbcdc/usb.h @@ -28,8 +28,14 @@ #define BUFFSIZE (64) +// send string with constant length +#define USND(str) do{USB_send((uint8_t*)str, sizeof(str)-1);}while(0) + void USB_setup(); void usb_proc(); -void USB_send(char *buf); +void USB_send(const uint8_t *buf, uint16_t len); +void USB_sendstr(const char *str); +void USB_send_blk(const uint8_t *buf, uint16_t len); +uint8_t USB_receive(uint8_t *buf); #endif // __USB_H__ diff --git a/F0-nolib/usbcdc/usb_defs.h b/F0-nolib/usbcdc/usb_defs.h index 3d18ab4..5054528 100644 --- a/F0-nolib/usbcdc/usb_defs.h +++ b/F0-nolib/usbcdc/usb_defs.h @@ -25,10 +25,29 @@ #ifndef __USB_DEFS_H__ #define __USB_DEFS_H__ -#include +#include + +// max endpoints number +#define STM32ENDPOINTS 8 +/** + * Buffers size definition + **/ +// !!! when working with CAN bus change USB_BTABLE_SIZE to 768 !!! +#define USB_BTABLE_SIZE 1024 +// for USB FS EP0 buffers are from 8 to 64 bytes long (64 for PL2303) +#define USB_EP0_BUFSZ 64 +// USB transmit buffer size (64 for PL2303) +#define USB_TXBUFSZ 64 +// USB receive buffer size (64 for PL2303) +#define USB_RXBUFSZ 64 +// EP1 - interrupt - buffer size +#define USB_EP1BUFSZ 8 #define USB_BTABLE_BASE 0x40006000 + +#ifdef USB_BTABLE #undef USB_BTABLE +#endif #define USB_BTABLE ((USB_BtableDef *)(USB_BTABLE_BASE)) #define USB_ISTR_EPID 0x0000000F #define USB_FNR_LSOF_0 0x00000800 @@ -60,15 +79,8 @@ #define USB_TypeDef USB_TypeDef_custom typedef struct{ - __IO uint32_t EPnR[8]; - __IO uint32_t RESERVED1; - __IO uint32_t RESERVED2; - __IO uint32_t RESERVED3; - __IO uint32_t RESERVED4; - __IO uint32_t RESERVED5; - __IO uint32_t RESERVED6; - __IO uint32_t RESERVED7; - __IO uint32_t RESERVED8; + __IO uint32_t EPnR[STM32ENDPOINTS]; + __IO uint32_t RESERVED[STM32ENDPOINTS]; __IO uint32_t CNTR; __IO uint32_t ISTR; __IO uint32_t FNR; @@ -86,7 +98,7 @@ typedef struct{ } USB_EPDATA_TypeDef; typedef struct{ - __IO USB_EPDATA_TypeDef EP[8]; + __IO USB_EPDATA_TypeDef EP[STM32ENDPOINTS]; } USB_BtableDef; #endif // __USB_DEFS_H__ diff --git a/F0-nolib/usbcdc/usb_lib.c b/F0-nolib/usbcdc/usb_lib.c index a88c631..8ba2acb 100644 --- a/F0-nolib/usbcdc/usb_lib.c +++ b/F0-nolib/usbcdc/usb_lib.c @@ -23,32 +23,35 @@ #include #include "usb_lib.h" -#include // memcpy -#include "usart.h" +ep_t endpoints[STM32ENDPOINTS]; -#define EP0DATABUF_SIZE (64) -#define DEVICE_DESCRIPTOR_SIZE_BYTE (18) -#define DEVICE_QALIFIER_SIZE_BYTE (10) -#define STRING_LANG_DESCRIPTOR_SIZE_BYTE (4) - +usb_dev_t USB_Dev; +uint8_t usbON = 0; static usb_LineCoding lineCoding = {115200, 0, 0, 8}; static config_pack_t setup_packet; static uint8_t ep0databuf[EP0DATABUF_SIZE]; static uint8_t ep0dbuflen = 0; -uint8_t setlinecoding = 0; usb_LineCoding getLineCoding(){return lineCoding;} -const uint8_t USB_DeviceDescriptor[] = { - DEVICE_DESCRIPTOR_SIZE_BYTE, // bLength - 0x01, // bDescriptorType - USB_DEVICE_DESC_TYPE - 0x10, // bcdUSB_L - 1.10 - 0x01, // bcdUSB_H - 0x00, // bDeviceClass - USB_COMM - 0x00, // bDeviceSubClass - 0x00, // bDeviceProtocol - 0x40, // bMaxPacketSize +// definition of parts common for USB_DeviceDescriptor & USB_DeviceQualifierDescriptor +#define bcdUSB_L 0x10 +#define bcdUSB_H 0x01 +#define bDeviceClass 0 +#define bDeviceSubClass 0 +#define bDeviceProtocol 0 +#define bNumConfigurations 1 + +static const uint8_t USB_DeviceDescriptor[] = { + 18, // bLength + 0x01, // bDescriptorType - Device descriptor + bcdUSB_L, // bcdUSB_L - 1.10 + bcdUSB_H, // bcdUSB_H + bDeviceClass, // bDeviceClass - USB_COMM + bDeviceSubClass, // bDeviceSubClass + bDeviceProtocol, // bDeviceProtocol + USB_EP0_BUFSZ, // bMaxPacketSize 0x7b, // idVendor_L PL2303: VID=0x067b, PID=0x2303 0x06, // idVendor_H 0x03, // idProduct_L @@ -58,23 +61,23 @@ const uint8_t USB_DeviceDescriptor[] = { 0x01, // iManufacturer 0x02, // iProduct 0x00, // iSerialNumber - 0x01 // bNumConfigurations + bNumConfigurations // bNumConfigurations }; -const uint8_t USB_DeviceQualifierDescriptor[] = { - DEVICE_QALIFIER_SIZE_BYTE, //bLength - 0x06, // bDescriptorType - 0x10, // bcdUSB_L - 0x01, // bcdUSB_H - 0x00, // bDeviceClass - 0x00, // bDeviceSubClass - 0x00, // bDeviceProtocol - 0x40, // bMaxPacketSize0 - 0x01, // bNumConfigurations +static const uint8_t USB_DeviceQualifierDescriptor[] = { + 10, //bLength + 0x06, // bDescriptorType - Device qualifier + bcdUSB_L, // bcdUSB_L + bcdUSB_H, // bcdUSB_H + bDeviceClass, // bDeviceClass + bDeviceSubClass, // bDeviceSubClass + bDeviceProtocol, // bDeviceProtocol + USB_EP0_BUFSZ, // bMaxPacketSize0 + bNumConfigurations, // bNumConfigurations 0x00 // Reserved }; -const uint8_t USB_ConfigDescriptor[] = { +static const uint8_t USB_ConfigDescriptor[] = { /*Configuration Descriptor*/ 0x09, /* bLength: Configuration Descriptor size */ 0x02, /* bDescriptorType: Configuration */ @@ -113,8 +116,8 @@ const uint8_t USB_ConfigDescriptor[] = { 0x05, /* bDescriptorType: Endpoint */ 0x02, /* bEndpointAddress: OUT2 */ 0x02, /* bmAttributes: Bulk */ - 0x40, /* wMaxPacketSize: */ - 0x00, + (USB_RXBUFSZ & 0xff), /* wMaxPacketSize: 64 */ + (USB_RXBUFSZ >> 8), 0x00, /* bInterval: ignore for Bulk transfer */ /*Endpoint IN3 Descriptor*/ @@ -122,56 +125,34 @@ const uint8_t USB_ConfigDescriptor[] = { 0x05, /* bDescriptorType: Endpoint */ 0x83, /* bEndpointAddress IN3 */ 0x02, /* bmAttributes: Bulk */ - 0x40, /* wMaxPacketSize: 64 */ - 0x00, + (USB_TXBUFSZ & 0xff), /* wMaxPacketSize: 64 */ + (USB_TXBUFSZ >> 8), 0x00, /* bInterval: ignore for Bulk transfer */ }; -_USB_LANG_ID_(LANG_US); +_USB_LANG_ID_(USB_StringLangDescriptor, LANG_US); // these descriptors are not used in PL2303 emulator! -_USB_STRING_(USB_StringSerialDescriptor, u"0") -_USB_STRING_(USB_StringManufacturingDescriptor, u"Prolific Technology Inc.") -_USB_STRING_(USB_StringProdDescriptor, u"USB-Serial Controller") - -static usb_dev_t USB_Dev; -static ep_t endpoints[MAX_ENDPOINTS]; +_USB_STRING_(USB_StringSerialDescriptor, u"0"); +_USB_STRING_(USB_StringManufacturingDescriptor, u"Prolific Technology Inc."); +_USB_STRING_(USB_StringProdDescriptor, u"USB-Serial Controller"); /* * default handlers */ // SET_LINE_CODING -void WEAK linecoding_handler(__attribute__((unused)) usb_LineCoding *lc){ - #ifdef EBUG - SEND("Want baudrate: "); printu(lc->dwDTERate); - SEND(", charFormat: "); printu(lc->bCharFormat); - SEND(", parityType: "); printu(lc->bParityType); - SEND(", dataBits: "); printu(lc->bDataBits); - usart_putchar('\n'); - #endif - setlinecoding = 1; +void WEAK linecoding_handler(usb_LineCoding __attribute__((unused)) *lc){ } // SET_CONTROL_LINE_STATE -void WEAK clstate_handler(__attribute__((unused)) uint16_t val){ - #ifdef EBUG - SEND("change state to "); - printu(val); - usart_putchar('\n'); - #endif +void WEAK clstate_handler(uint16_t __attribute__((unused)) val){ } // SEND_BREAK void WEAK break_handler(){ - MSG("Break\n"); } // handler of vendor requests void WEAK vendor_handler(config_pack_t *packet){ - SEND("Vendor, reqt="); - printuhex(packet->bmRequestType); - SEND(", wval="); - printuhex(packet->wValue); - usart_putchar('\n'); if(packet->bmRequestType & 0x80){ // read uint8_t c; switch(packet->wValue){ @@ -193,6 +174,96 @@ void WEAK vendor_handler(config_pack_t *packet){ } } +static void wr0(const uint8_t *buf, uint16_t size){ + if(setup_packet.wLength < size) size = setup_packet.wLength; // shortened request + if(size < endpoints[0].txbufsz){ + EP_WriteIRQ(0, buf, size); + return; + } + while(size){ + uint16_t l = size; + if(l > endpoints[0].txbufsz) l = endpoints[0].txbufsz; + EP_WriteIRQ(0, buf, l); + buf += l; + size -= l; + uint8_t needzlp = (l == endpoints[0].txbufsz) ? 1 : 0; + if(size || needzlp){ // send last data buffer + uint16_t status = KEEP_DTOG(USB->EPnR[0]); + // keep DTOGs, clear CTR_RX,TX, set TX VALID, leave stat_Rx + USB->EPnR[0] = (status & ~(USB_EPnR_CTR_RX|USB_EPnR_CTR_TX|USB_EPnR_STAT_RX)) + ^ USB_EPnR_STAT_TX; + uint32_t ctr = 1000000; + while(--ctr && (USB->ISTR & USB_ISTR_CTR) == 0){IWDG->KR = IWDG_REFRESH;}; + if((USB->ISTR & USB_ISTR_CTR) == 0){ + return; + } + if(needzlp) EP_WriteIRQ(0, (uint8_t*)0, 0); + } + } +} + +static inline void get_descriptor(){ + switch(setup_packet.wValue){ + case DEVICE_DESCRIPTOR: + wr0(USB_DeviceDescriptor, sizeof(USB_DeviceDescriptor)); + break; + case CONFIGURATION_DESCRIPTOR: + wr0(USB_ConfigDescriptor, sizeof(USB_ConfigDescriptor)); + break; + case STRING_LANG_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringLangDescriptor, STRING_LANG_DESCRIPTOR_SIZE_BYTE); + break; + case STRING_MAN_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringManufacturingDescriptor, USB_StringManufacturingDescriptor.bLength); + break; + case STRING_PROD_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringProdDescriptor, USB_StringProdDescriptor.bLength); + break; + case STRING_SN_DESCRIPTOR: + wr0((const uint8_t *)&USB_StringSerialDescriptor, USB_StringSerialDescriptor.bLength); + break; + case DEVICE_QUALIFIER_DESCRIPTOR: + wr0(USB_DeviceQualifierDescriptor, USB_DeviceQualifierDescriptor[0]); + break; + default: + break; + } +} + +static uint8_t configuration = 0; // reply for GET_CONFIGURATION (==1 if configured) +static inline void std_d2h_req(){ + uint16_t status = 0; // bus powered + switch(setup_packet.bRequest){ + case GET_DESCRIPTOR: + get_descriptor(); + break; + case GET_STATUS: + EP_WriteIRQ(0, (uint8_t *)&status, 2); // send status: Bus Powered + break; + case GET_CONFIGURATION: + EP_WriteIRQ(0, &configuration, 1); + break; + default: + break; + } +} + +static inline void std_h2d_req(){ + switch(setup_packet.bRequest){ + case SET_ADDRESS: + // new address will be assigned later - after acknowlegement or request to host + USB_Dev.USB_Addr = setup_packet.wValue; + break; + case SET_CONFIGURATION: + // Now device configured + USB_Dev.USB_Status = USB_STATE_CONFIGURED; + configuration = setup_packet.wValue; + break; + default: + break; + } +} + /* bmRequestType: 76543210 7 direction: 0 - host->device, 1 - device->host @@ -201,255 +272,158 @@ bmRequestType: 76543210 */ /** * Endpoint0 (control) handler - * @param ep - endpoint state - * @return data written to EP0R */ -uint16_t EP0_Handler(ep_t ep){ - uint16_t status = 0; // bus powered - uint16_t epstatus = ep.status; // EP0R on input -> return this value after modifications - static uint8_t configuration = 0; // reply for GET_CONFIGURATION (==1 if configured) - void wr0(const uint8_t *buf, uint16_t size){ - if(setup_packet.wLength < size) size = setup_packet.wLength; - EP_WriteIRQ(0, buf, size); - } -#ifdef EBUG - uint8_t _2wr = 0; - #define WRITEDUMP(str) do{MSG(str); _2wr = 1;}while(0) -#else - #define WRITEDUMP(str) -#endif - if ((ep.rx_flag) && (ep.setup_flag)){ - if (setup_packet.bmRequestType == 0x80){ // standard device request (device to host) - switch(setup_packet.bRequest){ - case GET_DESCRIPTOR: - switch(setup_packet.wValue){ - case DEVICE_DESCRIPTOR: - wr0(USB_DeviceDescriptor, sizeof(USB_DeviceDescriptor)); - break; - case CONFIGURATION_DESCRIPTOR: - wr0(USB_ConfigDescriptor, sizeof(USB_ConfigDescriptor)); - break; - case STRING_LANG_DESCRIPTOR: - wr0((const uint8_t *)&USB_StringLangDescriptor, STRING_LANG_DESCRIPTOR_SIZE_BYTE); - #ifdef EBUG - SEND("STRING_LANG_DESCRIPTOR\n"); - #endif - break; - case STRING_MAN_DESCRIPTOR: - wr0((const uint8_t *)&USB_StringManufacturingDescriptor, USB_StringManufacturingDescriptor.bLength); - #ifdef EBUG - SEND("STRING_MAN_DESCRIPTOR: "); - usart_sendn((char*)&USB_StringManufacturingDescriptor, USB_StringManufacturingDescriptor.bLength); usart_putchar('\n'); - #endif - break; - case STRING_PROD_DESCRIPTOR: - wr0((const uint8_t *)&USB_StringProdDescriptor, USB_StringProdDescriptor.bLength); - #ifdef EBUG - SEND("STRING_PROD_DESCRIPTOR: "); - usart_sendn((char*)&USB_StringProdDescriptor, USB_StringProdDescriptor.bLength); usart_putchar('\n'); - #endif - break; - case STRING_SN_DESCRIPTOR: - wr0((const uint8_t *)&USB_StringSerialDescriptor, USB_StringSerialDescriptor.bLength); - #ifdef EBUG - SEND("STRING_SN_DESCRIPTOR\n"); - #endif - break; - case DEVICE_QALIFIER_DESCRIPTOR: - wr0(USB_DeviceQualifierDescriptor, DEVICE_QALIFIER_SIZE_BYTE); - break; - default: - WRITEDUMP("UNK_DES"); - break; - } - break; - case GET_STATUS: - EP_WriteIRQ(0, (uint8_t *)&status, 2); // send status: Bus Powered - break; - case GET_CONFIGURATION: - WRITEDUMP("GET_CONFIGURATION"); - EP_WriteIRQ(0, &configuration, 1); - break; - default: - WRITEDUMP("80:WR_REQ"); - break; - } - epstatus = SET_NAK_RX(epstatus); - epstatus = SET_VALID_TX(epstatus); - }else if(setup_packet.bmRequestType == 0x00){ // standard device request (host to device) - switch(setup_packet.bRequest){ - case SET_ADDRESS: - // new address will be assigned later - after acknowlegement or request to host - USB_Dev.USB_Addr = setup_packet.wValue; - break; - case SET_CONFIGURATION: - // Now device configured - USB_Dev.USB_Status = USB_CONFIGURE_STATE; - configuration = setup_packet.wValue; - break; - default: - WRITEDUMP("0:WR_REQ"); - break; - } - // send ZLP - EP_WriteIRQ(0, (uint8_t *)0, 0); - epstatus = SET_NAK_RX(epstatus); - epstatus = SET_VALID_TX(epstatus); - }else if(setup_packet.bmRequestType == 0x02){ // standard endpoint request (host to device) - if (setup_packet.bRequest == CLEAR_FEATURE){ - // send ZLP +static void EP0_Handler(){ + uint16_t epstatus = USB->EPnR[0]; // EP0R on input -> return this value after modifications + uint8_t reqtype = setup_packet.bmRequestType & 0x7f; + uint8_t dev2host = (setup_packet.bmRequestType & 0x80) ? 1 : 0; + int rxflag = RX_FLAG(epstatus); + if(rxflag && SETUP_FLAG(epstatus)){ + switch(reqtype){ + case STANDARD_DEVICE_REQUEST_TYPE: // standard device request + if(dev2host){ + std_d2h_req(); + }else{ + std_h2d_req(); + EP_WriteIRQ(0, (uint8_t *)0, 0); + } + break; + case STANDARD_ENDPOINT_REQUEST_TYPE: // standard endpoint request + if(setup_packet.bRequest == CLEAR_FEATURE){ + EP_WriteIRQ(0, (uint8_t *)0, 0); + } + break; + case VENDOR_REQUEST_TYPE: + vendor_handler(&setup_packet); + break; + case CONTROL_REQUEST_TYPE: + switch(setup_packet.bRequest){ + case GET_LINE_CODING: + EP_WriteIRQ(0, (uint8_t*)&lineCoding, sizeof(lineCoding)); + break; + case SET_LINE_CODING: // omit this for next stage, when data will come + break; + case SET_CONTROL_LINE_STATE: + usbON = 1; + clstate_handler(setup_packet.wValue); + break; + case SEND_BREAK: + usbON = 0; + break_handler(); + break; + default: + break; + } + if(setup_packet.bRequest != GET_LINE_CODING) EP_WriteIRQ(0, (uint8_t *)0, 0); // write acknowledgement + break; + default: EP_WriteIRQ(0, (uint8_t *)0, 0); - epstatus = SET_NAK_RX(epstatus); - epstatus = SET_VALID_TX(epstatus); - }else{ - WRITEDUMP("02:WR_REQ"); - } - }else if((setup_packet.bmRequestType & VENDOR_MASK_REQUEST) == VENDOR_MASK_REQUEST){ // vendor request - vendor_handler(&setup_packet); - epstatus = SET_NAK_RX(epstatus); - epstatus = SET_VALID_TX(epstatus); - }else if((setup_packet.bmRequestType & 0x7f) == CONTROL_REQUEST_TYPE){ // control request - switch(setup_packet.bRequest){ - case GET_LINE_CODING: - EP_WriteIRQ(0, (uint8_t*)&lineCoding, sizeof(lineCoding)); - break; - case SET_LINE_CODING: - break; - case SET_CONTROL_LINE_STATE: - clstate_handler(setup_packet.wValue); - break; - case SEND_BREAK: - break_handler(); - break; - default: - WRITEDUMP("undef control req"); - } - if((setup_packet.bmRequestType & 0x80) == 0) EP_WriteIRQ(0, (uint8_t *)0, 0); // write acknowledgement - epstatus = SET_VALID_RX(epstatus); - epstatus = SET_VALID_TX(epstatus); } - }else if (ep.rx_flag){ // got data over EP0 or host acknowlegement - if(ep.rx_cnt){ - //EP_WriteIRQ(0, (uint8_t *)0, 0); + }else if(rxflag){ // got data over EP0 or host acknowlegement + if(endpoints[0].rx_cnt){ if(setup_packet.bRequest == SET_LINE_CODING){ linecoding_handler((usb_LineCoding*)ep0databuf); } } - // wait for new data from host - epstatus = SET_VALID_RX(epstatus); - epstatus = SET_VALID_TX(epstatus); - } else if (ep.tx_flag){ // package transmitted + } else if(TX_FLAG(epstatus)){ // package transmitted // now we can change address after enumeration if ((USB->DADDR & USB_DADDR_ADD) != USB_Dev.USB_Addr){ USB->DADDR = USB_DADDR_EF | USB_Dev.USB_Addr; // change state to ADRESSED - USB_Dev.USB_Status = USB_ADRESSED_STATE; + USB_Dev.USB_Status = USB_STATE_ADDRESSED; } - // end of transaction - epstatus = CLEAR_DTOG_RX(epstatus); - epstatus = CLEAR_DTOG_TX(epstatus); - epstatus = SET_VALID_RX(epstatus); - epstatus = SET_VALID_TX(epstatus); } -#ifdef EBUG - if(_2wr){ - usart_putchar(' '); - if (ep.rx_flag) usart_putchar('r'); - else usart_putchar('t'); - printu(setup_packet.wLength); - if(ep.setup_flag) usart_putchar('s'); - usart_putchar(' '); - usart_putchar('I'); - printu(setup_packet.wIndex); - usart_putchar('V'); - printu(setup_packet.wValue); - usart_putchar('R'); - printu(setup_packet.bRequest); - usart_putchar('T'); - printu(setup_packet.bmRequestType); - usart_putchar(' '); - usart_putchar('0' + ep0dbuflen); - usart_putchar(' '); - hexdump(ep0databuf, ep0dbuflen); - usart_putchar('\n'); - } -#endif - return epstatus; + epstatus = KEEP_DTOG(USB->EPnR[0]); + if(rxflag) epstatus ^= USB_EPnR_STAT_TX; // start ZLP/data transmission + else epstatus &= ~USB_EPnR_STAT_TX; // or leave unchanged + // keep DTOGs, clear CTR_RX,TX, set RX VALID + USB->EPnR[0] = (epstatus & ~(USB_EPnR_CTR_RX|USB_EPnR_CTR_TX)) ^ USB_EPnR_STAT_RX; } +static uint16_t lastaddr = LASTADDR_DEFAULT; /** - * Endpoint initialisation, size of input buffer fixed to 64 bytes + * Endpoint initialisation + * !!! when working with CAN bus change USB_BTABLE_SIZE to 768 !!! * @param number - EP num (0...7) * @param type - EP type (EP_TYPE_BULK, EP_TYPE_CONTROL, EP_TYPE_ISO, EP_TYPE_INTERRUPT) - * @param addr_tx - transmission buffer address @ USB/CAN buffer - * @param addr_rx - reception buffer address @ USB/CAN buffer + * @param txsz - transmission buffer size @ USB/CAN buffer + * @param rxsz - reception buffer size @ USB/CAN buffer * @param uint16_t (*func)(ep_t *ep) - EP handler function + * @return 0 if all OK */ -void EP_Init(uint8_t number, uint8_t type, uint16_t addr_tx, uint16_t addr_rx, uint16_t (*func)(ep_t ep)){ +int EP_Init(uint8_t number, uint8_t type, uint16_t txsz, uint16_t rxsz, void (*func)()){ + if(number >= STM32ENDPOINTS) return 4; // out of configured amount + if(txsz > USB_BTABLE_SIZE || rxsz > USB_BTABLE_SIZE) return 1; // buffer too large + if(lastaddr + txsz + rxsz >= USB_BTABLE_SIZE) return 2; // out of btable USB->EPnR[number] = (type << 9) | (number & USB_EPnR_EA); USB->EPnR[number] ^= USB_EPnR_STAT_RX | USB_EPnR_STAT_TX_1; - USB_BTABLE->EP[number].USB_ADDR_TX = addr_tx; + if(rxsz & 1 || rxsz > 992) return 3; // wrong rx buffer size + uint16_t countrx = 0; + if(rxsz < 64) countrx = rxsz / 2; + else{ + if(rxsz & 0x1f) return 3; // should be multiple of 32 + countrx = 31 + rxsz / 32; + } + USB_BTABLE->EP[number].USB_ADDR_TX = lastaddr; + endpoints[number].tx_buf = (uint16_t *)(USB_BTABLE_BASE + lastaddr); + endpoints[number].txbufsz = txsz; + lastaddr += txsz; USB_BTABLE->EP[number].USB_COUNT_TX = 0; - USB_BTABLE->EP[number].USB_ADDR_RX = addr_rx; - USB_BTABLE->EP[number].USB_COUNT_RX = 0x8400; // buffer size (64 bytes): Table127 of RM: BL_SIZE=1, NUM_BLOCK=1 + USB_BTABLE->EP[number].USB_ADDR_RX = lastaddr; + endpoints[number].rx_buf = (uint8_t *)(USB_BTABLE_BASE + lastaddr); + lastaddr += rxsz; + // buffer size: Table127 of RM + USB_BTABLE->EP[number].USB_COUNT_RX = countrx << 10; endpoints[number].func = func; - endpoints[number].tx_buf = (uint16_t *)(USB_BTABLE_BASE + addr_tx); - endpoints[number].rx_buf = (uint8_t *)(USB_BTABLE_BASE + addr_rx); + return 0; } // standard IRQ handler void usb_isr(){ - uint8_t n; if (USB->ISTR & USB_ISTR_RESET){ // Reinit registers - USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM; + USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM | USB_CNTR_SUSPM | USB_CNTR_WKUPM; USB->ISTR = 0; // Endpoint 0 - CONTROL - EP_Init(0, EP_TYPE_CONTROL, 64, 128, EP0_Handler); + // ON USB LS size of EP0 may be 8 bytes, but on FS it should be 64 bytes! + lastaddr = LASTADDR_DEFAULT; // roll back to beginning of buffer + EP_Init(0, EP_TYPE_CONTROL, USB_EP0_BUFSZ, USB_EP0_BUFSZ, EP0_Handler); // clear address, leave only enable bit USB->DADDR = USB_DADDR_EF; // state is default - wait for enumeration - USB_Dev.USB_Status = USB_DEFAULT_STATE; + USB_Dev.USB_Status = USB_STATE_DEFAULT; } - while(USB->ISTR & USB_ISTR_CTR){ + if(USB->ISTR & USB_ISTR_CTR){ // EP number - n = USB->ISTR & USB_ISTR_EPID; + uint8_t n = USB->ISTR & USB_ISTR_EPID; // copy status register uint16_t epstatus = USB->EPnR[n]; - // Calculate flags - endpoints[n].rx_flag = (epstatus & USB_EPnR_CTR_RX) ? 1 : 0; - endpoints[n].setup_flag = (epstatus & USB_EPnR_SETUP) ? 1 : 0; - endpoints[n].tx_flag = (epstatus & USB_EPnR_CTR_TX) ? 1 : 0; // copy received bytes amount - endpoints[n].rx_cnt = USB_BTABLE->EP[n].USB_COUNT_RX; + endpoints[n].rx_cnt = USB_BTABLE->EP[n].USB_COUNT_RX & 0x3FF; // low 10 bits is counter // check direction if(USB->ISTR & USB_ISTR_DIR){ // OUT interrupt - receive data, CTR_RX==1 (if CTR_TX == 1 - two pending transactions: receive following by transmit) if(n == 0){ // control endpoint if(epstatus & USB_EPnR_SETUP){ // setup packet -> copy data to conf_pack - memcpy(&setup_packet, endpoints[0].rx_buf, sizeof(setup_packet)); + EP_Read(0, (uint8_t*)&setup_packet); ep0dbuflen = 0; // interrupt handler will be called later }else if(epstatus & USB_EPnR_CTR_RX){ // data packet -> push received data to ep0databuf ep0dbuflen = endpoints[0].rx_cnt; - memcpy(ep0databuf, endpoints[0].rx_buf, ep0dbuflen); + EP_Read(0, (uint8_t*)&ep0databuf); } } - }else{ // IN interrupt - transmit data, only CTR_TX == 1 - // enumeration end could be here (if EP0) } - // prepare status field for EP handler - endpoints[n].status = epstatus; - // call EP handler (even if it will change EPnR, it should return new status) - epstatus = endpoints[n].func(endpoints[n]); - // keep DTOG state - epstatus = KEEP_DTOG_TX(epstatus); - epstatus = KEEP_DTOG_RX(epstatus); - // clear all RX/TX flags - epstatus = CLEAR_CTR_RX(epstatus); - epstatus = CLEAR_CTR_TX(epstatus); - // refresh EPnR - USB->EPnR[n] = epstatus; - USB_BTABLE->EP[n].USB_COUNT_RX = 0x8400; + // call EP handler + if(endpoints[n].func) endpoints[n].func(endpoints[n]); + } + if(USB->ISTR & USB_ISTR_SUSP){ // suspend -> still no connection, may sleep + usbON = 0; + USB->CNTR |= USB_CNTR_FSUSP | USB_CNTR_LPMODE; + USB->ISTR = ~USB_ISTR_SUSP; + } + if(USB->ISTR & USB_ISTR_WKUP){ // wakeup + USB->CNTR &= ~(USB_CNTR_FSUSP | USB_CNTR_LPMODE); // clear suspend flags + USB->ISTR = ~USB_ISTR_WKUP; } } @@ -461,6 +435,7 @@ void usb_isr(){ */ void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size){ uint8_t i; + if(size > USB_TXBUFSZ) size = USB_TXBUFSZ; uint16_t N2 = (size + 1) >> 1; // the buffer is 16-bit, so we should copy data as it would be uint16_t uint16_t *buf16 = (uint16_t *)buf; @@ -477,13 +452,10 @@ void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size){ * @param size - its size */ void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size){ - uint16_t status = USB->EPnR[number]; EP_WriteIRQ(number, buf, size); - status = SET_NAK_RX(status); - status = SET_VALID_TX(status); - status = KEEP_DTOG_TX(status); - status = KEEP_DTOG_RX(status); - USB->EPnR[number] = status; + uint16_t status = KEEP_DTOG(USB->EPnR[number]); + // keep DTOGs, clear CTR_TX & set TX VALID to start transmission + USB->EPnR[number] = (status & ~(USB_EPnR_CTR_TX)) ^ USB_EPnR_STAT_TX; } /* @@ -492,12 +464,10 @@ void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size){ * @return amount of data read */ int EP_Read(uint8_t number, uint8_t *buf){ - int i = endpoints[number].rx_cnt; - if(i) memcpy(buf, endpoints[number].rx_buf, i); - return i; -} - -// USB status -uint8_t USB_GetState(){ - return USB_Dev.USB_Status; + int n = endpoints[number].rx_cnt; + if(n){ + for(int i = 0; i < n; ++i) + buf[i] = endpoints[number].rx_buf[i]; + } + return n; } diff --git a/F0-nolib/usbcdc/usb_lib.h b/F0-nolib/usbcdc/usb_lib.h index 3057276..92eea1f 100644 --- a/F0-nolib/usbcdc/usb_lib.h +++ b/F0-nolib/usbcdc/usb_lib.h @@ -28,8 +28,14 @@ #include #include "usb_defs.h" -// Max EP amount (EP0 + other used) -#define MAX_ENDPOINTS 4 +#define EP0DATABUF_SIZE (64) +#define LASTADDR_DEFAULT (STM32ENDPOINTS * 8) + +// bmRequestType & 0x7f +#define STANDARD_DEVICE_REQUEST_TYPE 0 +#define STANDARD_ENDPOINT_REQUEST_TYPE 2 +#define VENDOR_REQUEST_TYPE 0x40 +#define CONTROL_REQUEST_TYPE 0x21 // bRequest, standard; for bmRequestType == 0x80 #define GET_STATUS 0x00 #define GET_DESCRIPTOR 0x06 @@ -44,21 +50,14 @@ #define GET_INTERFACE 0x0A // unused #define SET_INTERFACE 0x0B // unused #define SYNC_FRAME 0x0C // unused - -// vendor requests -#define VENDOR_MASK_REQUEST 0x40 -#define VENDOR_READ_REQUEST_TYPE 0xc0 -#define VENDOR_WRITE_REQUEST_TYPE 0x40 -#define VENDOR_REQUEST 0x01 - -#define CONTROL_REQUEST_TYPE 0x21 +#define VENDOR_REQUEST 0x01 // unused // Class-Specific Control Requests -#define SEND_ENCAPSULATED_COMMAND 0x00 -#define GET_ENCAPSULATED_RESPONSE 0x01 -#define SET_COMM_FEATURE 0x02 -#define GET_COMM_FEATURE 0x03 -#define CLEAR_COMM_FEATURE 0x04 +#define SEND_ENCAPSULATED_COMMAND 0x00 // unused +#define GET_ENCAPSULATED_RESPONSE 0x01 // unused +#define SET_COMM_FEATURE 0x02 // unused +#define GET_COMM_FEATURE 0x03 // unused +#define CLEAR_COMM_FEATURE 0x04 // unused #define SET_LINE_CODING 0x20 #define GET_LINE_CODING 0x21 #define SET_CONTROL_LINE_STATE 0x22 @@ -75,33 +74,23 @@ #define STRING_MAN_DESCRIPTOR 0x301 #define STRING_PROD_DESCRIPTOR 0x302 #define STRING_SN_DESCRIPTOR 0x303 -#define DEVICE_QALIFIER_DESCRIPTOR 0x600 +#define DEVICE_QUALIFIER_DESCRIPTOR 0x600 + +#define RX_FLAG(epstat) (epstat & USB_EPnR_CTR_RX) +#define TX_FLAG(epstat) (epstat & USB_EPnR_CTR_TX) +#define SETUP_FLAG(epstat) (epstat & USB_EPnR_SETUP) // EPnR bits manipulation -#define CLEAR_DTOG_RX(R) (R & USB_EPnR_DTOG_RX) ? R : (R & (~USB_EPnR_DTOG_RX)) -#define SET_DTOG_RX(R) (R & USB_EPnR_DTOG_RX) ? (R & (~USB_EPnR_DTOG_RX)) : R -#define TOGGLE_DTOG_RX(R) (R | USB_EPnR_DTOG_RX) -#define KEEP_DTOG_RX(R) (R & (~USB_EPnR_DTOG_RX)) -#define CLEAR_DTOG_TX(R) (R & USB_EPnR_DTOG_TX) ? R : (R & (~USB_EPnR_DTOG_TX)) -#define SET_DTOG_TX(R) (R & USB_EPnR_DTOG_TX) ? (R & (~USB_EPnR_DTOG_TX)) : R -#define TOGGLE_DTOG_TX(R) (R | USB_EPnR_DTOG_TX) -#define KEEP_DTOG_TX(R) (R & (~USB_EPnR_DTOG_TX)) -#define SET_VALID_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX) | (R & (~USB_EPnR_STAT_RX)) -#define SET_NAK_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX_1) | (R & (~USB_EPnR_STAT_RX)) -#define SET_STALL_RX(R) ((R & USB_EPnR_STAT_RX) ^ USB_EPnR_STAT_RX_0) | (R & (~USB_EPnR_STAT_RX)) -#define KEEP_STAT_RX(R) (R & (~USB_EPnR_STAT_RX)) -#define SET_VALID_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX) | (R & (~USB_EPnR_STAT_TX)) -#define SET_NAK_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX_1) | (R & (~USB_EPnR_STAT_TX)) -#define SET_STALL_TX(R) ((R & USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_TX_0) | (R & (~USB_EPnR_STAT_TX)) -#define KEEP_STAT_TX(R) (R & (~USB_EPnR_STAT_TX)) -#define CLEAR_CTR_RX(R) (R & (~USB_EPnR_CTR_RX)) -#define CLEAR_CTR_TX(R) (R & (~USB_EPnR_CTR_TX)) -#define CLEAR_CTR_RX_TX(R) (R & (~(USB_EPnR_CTR_TX | USB_EPnR_CTR_RX))) +#define KEEP_DTOG_STAT(EPnR) (EPnR & ~(USB_EPnR_STAT_RX|USB_EPnR_STAT_TX|USB_EPnR_DTOG_RX|USB_EPnR_DTOG_TX)) +#define KEEP_DTOG(EPnR) (EPnR & ~(USB_EPnR_DTOG_RX|USB_EPnR_DTOG_TX)) -// USB state: uninitialized, addressed, ready for use -#define USB_DEFAULT_STATE 0 -#define USB_ADRESSED_STATE 1 -#define USB_CONFIGURE_STATE 2 +// USB state: uninitialized, addressed, ready for use, client connected +typedef enum{ + USB_STATE_DEFAULT, + USB_STATE_ADDRESSED, + USB_STATE_CONFIGURED, + USB_STATE_CONNECTED +} USB_state; // EP types #define EP_TYPE_BULK 0x00 @@ -119,18 +108,19 @@ static const struct name \ uint16_t bString[(sizeof(str) - 2) / 2]; \ \ } \ -name = {sizeof(name), 0x03, str}; +name = {sizeof(name), 0x03, str} -#define _USB_LANG_ID_(lng_id) \ +#define _USB_LANG_ID_(name, lng_id) \ \ -static const struct USB_StringLangDescriptor \ +static const struct name \ { \ uint8_t bLength; \ uint8_t bDescriptorType; \ uint16_t bString; \ \ } \ -USB_StringLangDescriptor = {0x04, 0x03, lng_id}; +name = {0x04, 0x03, lng_id} +#define STRING_LANG_DESCRIPTOR_SIZE_BYTE (4) // EP0 configuration packet typedef struct { @@ -143,19 +133,16 @@ typedef struct { // endpoints state typedef struct __ep_t{ - uint16_t *tx_buf; - uint8_t *rx_buf; - uint16_t (*func)(); - uint16_t status; - unsigned rx_cnt : 10; - unsigned tx_flag : 1; - unsigned rx_flag : 1; - unsigned setup_flag : 1; + uint16_t *tx_buf; // transmission buffer address + uint16_t txbufsz; // transmission buffer size + uint8_t *rx_buf; // reception buffer address + void (*func)(); // endpoint action function + uint16_t rx_cnt; // received data counter } ep_t; // USB status & its address typedef struct { - uint8_t USB_Status; + uint8_t USB_Status; uint16_t USB_Addr; }usb_dev_t; @@ -182,22 +169,21 @@ typedef struct { uint16_t wLength; } __attribute__ ((packed)) usb_cdc_notification; -extern uint8_t setlinecoding; -#define SETLINECODING() (setlinecoding) -#define CLRLINECODING() do{setlinecoding = 0;}while(0) +extern ep_t endpoints[]; +extern usb_dev_t USB_Dev; +extern uint8_t usbON; void USB_Init(); uint8_t USB_GetState(); -void EP_Init(uint8_t number, uint8_t type, uint16_t addr_tx, uint16_t addr_rx, uint16_t (*func)(ep_t ep)); +int EP_Init(uint8_t number, uint8_t type, uint16_t txsz, uint16_t rxsz, void (*func)()); void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size); void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size); int EP_Read(uint8_t number, uint8_t *buf); usb_LineCoding getLineCoding(); - -void WEAK linecoding_handler(usb_LineCoding *lc); -void WEAK clstate_handler(uint16_t val); -void WEAK break_handler(); -void WEAK vendor_handler(config_pack_t *packet); +void linecoding_handler(usb_LineCoding *lc); +void clstate_handler(uint16_t val); +void break_handler(); +void vendor_handler(config_pack_t *packet); #endif // __USB_LIB_H__ diff --git a/F0-nolib/usbcdc/usbcan.bin b/F0-nolib/usbcdc/usbcan.bin index b8ecb64..3b8cfc9 100755 Binary files a/F0-nolib/usbcdc/usbcan.bin and b/F0-nolib/usbcdc/usbcan.bin differ diff --git a/F0-nolib/usbcdc/usbcan.c.tags b/F0-nolib/usbcdc/usbcan.c.tags deleted file mode 100644 index d74137b..0000000 --- a/F0-nolib/usbcdc/usbcan.c.tags +++ /dev/null @@ -1,4840 +0,0 @@ -# format=tagmanager -ADC655360 -ADC1655360 -ADC1_BASE655360 -ADC1_COMP_IRQHandler655360 -ADC1_COMP_IRQn655360 -ADC_BASE655360 -ADC_CCR_TSEN655360 -ADC_CCR_VBATEN655360 -ADC_CCR_VREFEN655360 -ADC_CFGR1_ALIGN655360 -ADC_CFGR1_AUTDLY655360 -ADC_CFGR1_AUTOFF655360 -ADC_CFGR1_AWDCH655360 -ADC_CFGR1_AWDCH_0655360 -ADC_CFGR1_AWDCH_1655360 -ADC_CFGR1_AWDCH_2655360 -ADC_CFGR1_AWDCH_3655360 -ADC_CFGR1_AWDCH_4655360 -ADC_CFGR1_AWDEN655360 -ADC_CFGR1_AWDSGL655360 -ADC_CFGR1_CONT655360 -ADC_CFGR1_DISCEN655360 -ADC_CFGR1_DMACFG655360 -ADC_CFGR1_DMAEN655360 -ADC_CFGR1_EXTEN655360 -ADC_CFGR1_EXTEN_0655360 -ADC_CFGR1_EXTEN_1655360 -ADC_CFGR1_EXTSEL655360 -ADC_CFGR1_EXTSEL_0655360 -ADC_CFGR1_EXTSEL_1655360 -ADC_CFGR1_EXTSEL_2655360 -ADC_CFGR1_OVRMOD655360 -ADC_CFGR1_RES655360 -ADC_CFGR1_RES_0655360 -ADC_CFGR1_RES_1655360 -ADC_CFGR1_SCANDIR655360 -ADC_CFGR1_WAIT655360 -ADC_CFGR2_CKMODE655360 -ADC_CFGR2_CKMODE_0655360 -ADC_CFGR2_CKMODE_1655360 -ADC_CFGR2_JITOFFDIV2655360 -ADC_CFGR2_JITOFFDIV4655360 -ADC_CHSELR_CHSEL0655360 -ADC_CHSELR_CHSEL1655360 -ADC_CHSELR_CHSEL10655360 -ADC_CHSELR_CHSEL11655360 -ADC_CHSELR_CHSEL12655360 -ADC_CHSELR_CHSEL13655360 -ADC_CHSELR_CHSEL14655360 -ADC_CHSELR_CHSEL15655360 -ADC_CHSELR_CHSEL16655360 -ADC_CHSELR_CHSEL17655360 -ADC_CHSELR_CHSEL18655360 -ADC_CHSELR_CHSEL2655360 -ADC_CHSELR_CHSEL3655360 -ADC_CHSELR_CHSEL4655360 -ADC_CHSELR_CHSEL5655360 -ADC_CHSELR_CHSEL6655360 -ADC_CHSELR_CHSEL7655360 -ADC_CHSELR_CHSEL8655360 -ADC_CHSELR_CHSEL9655360 -ADC_CR_ADCAL655360 -ADC_CR_ADDIS655360 -ADC_CR_ADEN655360 -ADC_CR_ADSTART655360 -ADC_CR_ADSTP655360 -ADC_DR_DATA655360 -ADC_HTR_HT655360 -ADC_IER_ADRDYIE655360 -ADC_IER_AWDIE655360 -ADC_IER_EOCIE655360 -ADC_IER_EOSEQIE655360 -ADC_IER_EOSIE655360 -ADC_IER_EOSMPIE655360 -ADC_IER_OVRIE655360 -ADC_ISR_ADRDY655360 -ADC_ISR_AWD655360 -ADC_ISR_EOC655360 -ADC_ISR_EOS655360 -ADC_ISR_EOSEQ655360 -ADC_ISR_EOSMP655360 -ADC_ISR_OVR655360 -ADC_LTR_LT655360 -ADC_SMPR1_SMPR655360 -ADC_SMPR1_SMPR_0655360 -ADC_SMPR1_SMPR_1655360 -ADC_SMPR1_SMPR_2655360 -ADC_SMPR_SMP655360 -ADC_SMPR_SMP_0655360 -ADC_SMPR_SMP_1655360 -ADC_SMPR_SMP_2655360 -ADC_TR_HT655360 -ADC_TR_LT655360 -AHB2PERIPH_BASE655360 -AHBPERIPH_BASE655360 -APBPERIPH_BASE655360 -BCAST_ID655360 -BCDR64anon_struct_00volatile uint32_t -BTABLE64anon_struct_00volatile uint32_t -BUFFSIZE655360 -CAN655360 -CANID163840uint16_t -CAN_BASE655360 -CAN_BTR_BRP655360 -CAN_BTR_LBKM655360 -CAN_BTR_SILM655360 -CAN_BTR_SJW655360 -CAN_BTR_SJW_0655360 -CAN_BTR_SJW_1655360 -CAN_BTR_TS1655360 -CAN_BTR_TS1_0655360 -CAN_BTR_TS1_1655360 -CAN_BTR_TS1_2655360 -CAN_BTR_TS1_3655360 -CAN_BTR_TS2655360 -CAN_BTR_TS2_0655360 -CAN_BTR_TS2_1655360 -CAN_BTR_TS2_2655360 -CAN_BUSY4anon_enum_40 -CAN_ESR_BOFF655360 -CAN_ESR_EPVF655360 -CAN_ESR_EWGF655360 -CAN_ESR_LEC655360 -CAN_ESR_LEC_0655360 -CAN_ESR_LEC_1655360 -CAN_ESR_LEC_2655360 -CAN_ESR_REC655360 -CAN_ESR_TEC655360 -CAN_F0R1_FB0655360 -CAN_F0R1_FB1655360 -CAN_F0R1_FB10655360 -CAN_F0R1_FB11655360 -CAN_F0R1_FB12655360 -CAN_F0R1_FB13655360 -CAN_F0R1_FB14655360 -CAN_F0R1_FB15655360 -CAN_F0R1_FB16655360 -CAN_F0R1_FB17655360 -CAN_F0R1_FB18655360 -CAN_F0R1_FB19655360 -CAN_F0R1_FB2655360 -CAN_F0R1_FB20655360 -CAN_F0R1_FB21655360 -CAN_F0R1_FB22655360 -CAN_F0R1_FB23655360 -CAN_F0R1_FB24655360 -CAN_F0R1_FB25655360 -CAN_F0R1_FB26655360 -CAN_F0R1_FB27655360 -CAN_F0R1_FB28655360 -CAN_F0R1_FB29655360 -CAN_F0R1_FB3655360 -CAN_F0R1_FB30655360 -CAN_F0R1_FB31655360 -CAN_F0R1_FB4655360 -CAN_F0R1_FB5655360 -CAN_F0R1_FB6655360 -CAN_F0R1_FB7655360 -CAN_F0R1_FB8655360 -CAN_F0R1_FB9655360 -CAN_F0R2_FB0655360 -CAN_F0R2_FB1655360 -CAN_F0R2_FB10655360 -CAN_F0R2_FB11655360 -CAN_F0R2_FB12655360 -CAN_F0R2_FB13655360 -CAN_F0R2_FB14655360 -CAN_F0R2_FB15655360 -CAN_F0R2_FB16655360 -CAN_F0R2_FB17655360 -CAN_F0R2_FB18655360 -CAN_F0R2_FB19655360 -CAN_F0R2_FB2655360 -CAN_F0R2_FB20655360 -CAN_F0R2_FB21655360 -CAN_F0R2_FB22655360 -CAN_F0R2_FB23655360 -CAN_F0R2_FB24655360 -CAN_F0R2_FB25655360 -CAN_F0R2_FB26655360 -CAN_F0R2_FB27655360 -CAN_F0R2_FB28655360 -CAN_F0R2_FB29655360 -CAN_F0R2_FB3655360 -CAN_F0R2_FB30655360 -CAN_F0R2_FB31655360 -CAN_F0R2_FB4655360 -CAN_F0R2_FB5655360 -CAN_F0R2_FB6655360 -CAN_F0R2_FB7655360 -CAN_F0R2_FB8655360 -CAN_F0R2_FB9655360 -CAN_F10R1_FB0655360 -CAN_F10R1_FB1655360 -CAN_F10R1_FB10655360 -CAN_F10R1_FB11655360 -CAN_F10R1_FB12655360 -CAN_F10R1_FB13655360 -CAN_F10R1_FB14655360 -CAN_F10R1_FB15655360 -CAN_F10R1_FB16655360 -CAN_F10R1_FB17655360 -CAN_F10R1_FB18655360 -CAN_F10R1_FB19655360 -CAN_F10R1_FB2655360 -CAN_F10R1_FB20655360 -CAN_F10R1_FB21655360 -CAN_F10R1_FB22655360 -CAN_F10R1_FB23655360 -CAN_F10R1_FB24655360 -CAN_F10R1_FB25655360 -CAN_F10R1_FB26655360 -CAN_F10R1_FB27655360 -CAN_F10R1_FB28655360 -CAN_F10R1_FB29655360 -CAN_F10R1_FB3655360 -CAN_F10R1_FB30655360 -CAN_F10R1_FB31655360 -CAN_F10R1_FB4655360 -CAN_F10R1_FB5655360 -CAN_F10R1_FB6655360 -CAN_F10R1_FB7655360 -CAN_F10R1_FB8655360 -CAN_F10R1_FB9655360 -CAN_F10R2_FB0655360 -CAN_F10R2_FB1655360 -CAN_F10R2_FB10655360 -CAN_F10R2_FB11655360 -CAN_F10R2_FB12655360 -CAN_F10R2_FB13655360 -CAN_F10R2_FB14655360 -CAN_F10R2_FB15655360 -CAN_F10R2_FB16655360 -CAN_F10R2_FB17655360 -CAN_F10R2_FB18655360 -CAN_F10R2_FB19655360 -CAN_F10R2_FB2655360 -CAN_F10R2_FB20655360 -CAN_F10R2_FB21655360 -CAN_F10R2_FB22655360 -CAN_F10R2_FB23655360 -CAN_F10R2_FB24655360 -CAN_F10R2_FB25655360 -CAN_F10R2_FB26655360 -CAN_F10R2_FB27655360 -CAN_F10R2_FB28655360 -CAN_F10R2_FB29655360 -CAN_F10R2_FB3655360 -CAN_F10R2_FB30655360 -CAN_F10R2_FB31655360 -CAN_F10R2_FB4655360 -CAN_F10R2_FB5655360 -CAN_F10R2_FB6655360 -CAN_F10R2_FB7655360 -CAN_F10R2_FB8655360 -CAN_F10R2_FB9655360 -CAN_F11R1_FB0655360 -CAN_F11R1_FB1655360 -CAN_F11R1_FB10655360 -CAN_F11R1_FB11655360 -CAN_F11R1_FB12655360 -CAN_F11R1_FB13655360 -CAN_F11R1_FB14655360 -CAN_F11R1_FB15655360 -CAN_F11R1_FB16655360 -CAN_F11R1_FB17655360 -CAN_F11R1_FB18655360 -CAN_F11R1_FB19655360 -CAN_F11R1_FB2655360 -CAN_F11R1_FB20655360 -CAN_F11R1_FB21655360 -CAN_F11R1_FB22655360 -CAN_F11R1_FB23655360 -CAN_F11R1_FB24655360 -CAN_F11R1_FB25655360 -CAN_F11R1_FB26655360 -CAN_F11R1_FB27655360 -CAN_F11R1_FB28655360 -CAN_F11R1_FB29655360 -CAN_F11R1_FB3655360 -CAN_F11R1_FB30655360 -CAN_F11R1_FB31655360 -CAN_F11R1_FB4655360 -CAN_F11R1_FB5655360 -CAN_F11R1_FB6655360 -CAN_F11R1_FB7655360 -CAN_F11R1_FB8655360 -CAN_F11R1_FB9655360 -CAN_F11R2_FB0655360 -CAN_F11R2_FB1655360 -CAN_F11R2_FB10655360 -CAN_F11R2_FB11655360 -CAN_F11R2_FB12655360 -CAN_F11R2_FB13655360 -CAN_F11R2_FB14655360 -CAN_F11R2_FB15655360 -CAN_F11R2_FB16655360 -CAN_F11R2_FB17655360 -CAN_F11R2_FB18655360 -CAN_F11R2_FB19655360 -CAN_F11R2_FB2655360 -CAN_F11R2_FB20655360 -CAN_F11R2_FB21655360 -CAN_F11R2_FB22655360 -CAN_F11R2_FB23655360 -CAN_F11R2_FB24655360 -CAN_F11R2_FB25655360 -CAN_F11R2_FB26655360 -CAN_F11R2_FB27655360 -CAN_F11R2_FB28655360 -CAN_F11R2_FB29655360 -CAN_F11R2_FB3655360 -CAN_F11R2_FB30655360 -CAN_F11R2_FB31655360 -CAN_F11R2_FB4655360 -CAN_F11R2_FB5655360 -CAN_F11R2_FB6655360 -CAN_F11R2_FB7655360 -CAN_F11R2_FB8655360 -CAN_F11R2_FB9655360 -CAN_F12R1_FB0655360 -CAN_F12R1_FB1655360 -CAN_F12R1_FB10655360 -CAN_F12R1_FB11655360 -CAN_F12R1_FB12655360 -CAN_F12R1_FB13655360 -CAN_F12R1_FB14655360 -CAN_F12R1_FB15655360 -CAN_F12R1_FB16655360 -CAN_F12R1_FB17655360 -CAN_F12R1_FB18655360 -CAN_F12R1_FB19655360 -CAN_F12R1_FB2655360 -CAN_F12R1_FB20655360 -CAN_F12R1_FB21655360 -CAN_F12R1_FB22655360 -CAN_F12R1_FB23655360 -CAN_F12R1_FB24655360 -CAN_F12R1_FB25655360 -CAN_F12R1_FB26655360 -CAN_F12R1_FB27655360 -CAN_F12R1_FB28655360 -CAN_F12R1_FB29655360 -CAN_F12R1_FB3655360 -CAN_F12R1_FB30655360 -CAN_F12R1_FB31655360 -CAN_F12R1_FB4655360 -CAN_F12R1_FB5655360 -CAN_F12R1_FB6655360 -CAN_F12R1_FB7655360 -CAN_F12R1_FB8655360 -CAN_F12R1_FB9655360 -CAN_F12R2_FB0655360 -CAN_F12R2_FB1655360 -CAN_F12R2_FB10655360 -CAN_F12R2_FB11655360 -CAN_F12R2_FB12655360 -CAN_F12R2_FB13655360 -CAN_F12R2_FB14655360 -CAN_F12R2_FB15655360 -CAN_F12R2_FB16655360 -CAN_F12R2_FB17655360 -CAN_F12R2_FB18655360 -CAN_F12R2_FB19655360 -CAN_F12R2_FB2655360 -CAN_F12R2_FB20655360 -CAN_F12R2_FB21655360 -CAN_F12R2_FB22655360 -CAN_F12R2_FB23655360 -CAN_F12R2_FB24655360 -CAN_F12R2_FB25655360 -CAN_F12R2_FB26655360 -CAN_F12R2_FB27655360 -CAN_F12R2_FB28655360 -CAN_F12R2_FB29655360 -CAN_F12R2_FB3655360 -CAN_F12R2_FB30655360 -CAN_F12R2_FB31655360 -CAN_F12R2_FB4655360 -CAN_F12R2_FB5655360 -CAN_F12R2_FB6655360 -CAN_F12R2_FB7655360 -CAN_F12R2_FB8655360 -CAN_F12R2_FB9655360 -CAN_F13R1_FB0655360 -CAN_F13R1_FB1655360 -CAN_F13R1_FB10655360 -CAN_F13R1_FB11655360 -CAN_F13R1_FB12655360 -CAN_F13R1_FB13655360 -CAN_F13R1_FB14655360 -CAN_F13R1_FB15655360 -CAN_F13R1_FB16655360 -CAN_F13R1_FB17655360 -CAN_F13R1_FB18655360 -CAN_F13R1_FB19655360 -CAN_F13R1_FB2655360 -CAN_F13R1_FB20655360 -CAN_F13R1_FB21655360 -CAN_F13R1_FB22655360 -CAN_F13R1_FB23655360 -CAN_F13R1_FB24655360 -CAN_F13R1_FB25655360 -CAN_F13R1_FB26655360 -CAN_F13R1_FB27655360 -CAN_F13R1_FB28655360 -CAN_F13R1_FB29655360 -CAN_F13R1_FB3655360 -CAN_F13R1_FB30655360 -CAN_F13R1_FB31655360 -CAN_F13R1_FB4655360 -CAN_F13R1_FB5655360 -CAN_F13R1_FB6655360 -CAN_F13R1_FB7655360 -CAN_F13R1_FB8655360 -CAN_F13R1_FB9655360 -CAN_F13R2_FB0655360 -CAN_F13R2_FB1655360 -CAN_F13R2_FB10655360 -CAN_F13R2_FB11655360 -CAN_F13R2_FB12655360 -CAN_F13R2_FB13655360 -CAN_F13R2_FB14655360 -CAN_F13R2_FB15655360 -CAN_F13R2_FB16655360 -CAN_F13R2_FB17655360 -CAN_F13R2_FB18655360 -CAN_F13R2_FB19655360 -CAN_F13R2_FB2655360 -CAN_F13R2_FB20655360 -CAN_F13R2_FB21655360 -CAN_F13R2_FB22655360 -CAN_F13R2_FB23655360 -CAN_F13R2_FB24655360 -CAN_F13R2_FB25655360 -CAN_F13R2_FB26655360 -CAN_F13R2_FB27655360 -CAN_F13R2_FB28655360 -CAN_F13R2_FB29655360 -CAN_F13R2_FB3655360 -CAN_F13R2_FB30655360 -CAN_F13R2_FB31655360 -CAN_F13R2_FB4655360 -CAN_F13R2_FB5655360 -CAN_F13R2_FB6655360 -CAN_F13R2_FB7655360 -CAN_F13R2_FB8655360 -CAN_F13R2_FB9655360 -CAN_F1R1_FB0655360 -CAN_F1R1_FB1655360 -CAN_F1R1_FB10655360 -CAN_F1R1_FB11655360 -CAN_F1R1_FB12655360 -CAN_F1R1_FB13655360 -CAN_F1R1_FB14655360 -CAN_F1R1_FB15655360 -CAN_F1R1_FB16655360 -CAN_F1R1_FB17655360 -CAN_F1R1_FB18655360 -CAN_F1R1_FB19655360 -CAN_F1R1_FB2655360 -CAN_F1R1_FB20655360 -CAN_F1R1_FB21655360 -CAN_F1R1_FB22655360 -CAN_F1R1_FB23655360 -CAN_F1R1_FB24655360 -CAN_F1R1_FB25655360 -CAN_F1R1_FB26655360 -CAN_F1R1_FB27655360 -CAN_F1R1_FB28655360 -CAN_F1R1_FB29655360 -CAN_F1R1_FB3655360 -CAN_F1R1_FB30655360 -CAN_F1R1_FB31655360 -CAN_F1R1_FB4655360 -CAN_F1R1_FB5655360 -CAN_F1R1_FB6655360 -CAN_F1R1_FB7655360 -CAN_F1R1_FB8655360 -CAN_F1R1_FB9655360 -CAN_F1R2_FB0655360 -CAN_F1R2_FB1655360 -CAN_F1R2_FB10655360 -CAN_F1R2_FB11655360 -CAN_F1R2_FB12655360 -CAN_F1R2_FB13655360 -CAN_F1R2_FB14655360 -CAN_F1R2_FB15655360 -CAN_F1R2_FB16655360 -CAN_F1R2_FB17655360 -CAN_F1R2_FB18655360 -CAN_F1R2_FB19655360 -CAN_F1R2_FB2655360 -CAN_F1R2_FB20655360 -CAN_F1R2_FB21655360 -CAN_F1R2_FB22655360 -CAN_F1R2_FB23655360 -CAN_F1R2_FB24655360 -CAN_F1R2_FB25655360 -CAN_F1R2_FB26655360 -CAN_F1R2_FB27655360 -CAN_F1R2_FB28655360 -CAN_F1R2_FB29655360 -CAN_F1R2_FB3655360 -CAN_F1R2_FB30655360 -CAN_F1R2_FB31655360 -CAN_F1R2_FB4655360 -CAN_F1R2_FB5655360 -CAN_F1R2_FB6655360 -CAN_F1R2_FB7655360 -CAN_F1R2_FB8655360 -CAN_F1R2_FB9655360 -CAN_F2R1_FB0655360 -CAN_F2R1_FB1655360 -CAN_F2R1_FB10655360 -CAN_F2R1_FB11655360 -CAN_F2R1_FB12655360 -CAN_F2R1_FB13655360 -CAN_F2R1_FB14655360 -CAN_F2R1_FB15655360 -CAN_F2R1_FB16655360 -CAN_F2R1_FB17655360 -CAN_F2R1_FB18655360 -CAN_F2R1_FB19655360 -CAN_F2R1_FB2655360 -CAN_F2R1_FB20655360 -CAN_F2R1_FB21655360 -CAN_F2R1_FB22655360 -CAN_F2R1_FB23655360 -CAN_F2R1_FB24655360 -CAN_F2R1_FB25655360 -CAN_F2R1_FB26655360 -CAN_F2R1_FB27655360 -CAN_F2R1_FB28655360 -CAN_F2R1_FB29655360 -CAN_F2R1_FB3655360 -CAN_F2R1_FB30655360 -CAN_F2R1_FB31655360 -CAN_F2R1_FB4655360 -CAN_F2R1_FB5655360 -CAN_F2R1_FB6655360 -CAN_F2R1_FB7655360 -CAN_F2R1_FB8655360 -CAN_F2R1_FB9655360 -CAN_F2R2_FB0655360 -CAN_F2R2_FB1655360 -CAN_F2R2_FB10655360 -CAN_F2R2_FB11655360 -CAN_F2R2_FB12655360 -CAN_F2R2_FB13655360 -CAN_F2R2_FB14655360 -CAN_F2R2_FB15655360 -CAN_F2R2_FB16655360 -CAN_F2R2_FB17655360 -CAN_F2R2_FB18655360 -CAN_F2R2_FB19655360 -CAN_F2R2_FB2655360 -CAN_F2R2_FB20655360 -CAN_F2R2_FB21655360 -CAN_F2R2_FB22655360 -CAN_F2R2_FB23655360 -CAN_F2R2_FB24655360 -CAN_F2R2_FB25655360 -CAN_F2R2_FB26655360 -CAN_F2R2_FB27655360 -CAN_F2R2_FB28655360 -CAN_F2R2_FB29655360 -CAN_F2R2_FB3655360 -CAN_F2R2_FB30655360 -CAN_F2R2_FB31655360 -CAN_F2R2_FB4655360 -CAN_F2R2_FB5655360 -CAN_F2R2_FB6655360 -CAN_F2R2_FB7655360 -CAN_F2R2_FB8655360 -CAN_F2R2_FB9655360 -CAN_F3R1_FB0655360 -CAN_F3R1_FB1655360 -CAN_F3R1_FB10655360 -CAN_F3R1_FB11655360 -CAN_F3R1_FB12655360 -CAN_F3R1_FB13655360 -CAN_F3R1_FB14655360 -CAN_F3R1_FB15655360 -CAN_F3R1_FB16655360 -CAN_F3R1_FB17655360 -CAN_F3R1_FB18655360 -CAN_F3R1_FB19655360 -CAN_F3R1_FB2655360 -CAN_F3R1_FB20655360 -CAN_F3R1_FB21655360 -CAN_F3R1_FB22655360 -CAN_F3R1_FB23655360 -CAN_F3R1_FB24655360 -CAN_F3R1_FB25655360 -CAN_F3R1_FB26655360 -CAN_F3R1_FB27655360 -CAN_F3R1_FB28655360 -CAN_F3R1_FB29655360 -CAN_F3R1_FB3655360 -CAN_F3R1_FB30655360 -CAN_F3R1_FB31655360 -CAN_F3R1_FB4655360 -CAN_F3R1_FB5655360 -CAN_F3R1_FB6655360 -CAN_F3R1_FB7655360 -CAN_F3R1_FB8655360 -CAN_F3R1_FB9655360 -CAN_F3R2_FB0655360 -CAN_F3R2_FB1655360 -CAN_F3R2_FB10655360 -CAN_F3R2_FB11655360 -CAN_F3R2_FB12655360 -CAN_F3R2_FB13655360 -CAN_F3R2_FB14655360 -CAN_F3R2_FB15655360 -CAN_F3R2_FB16655360 -CAN_F3R2_FB17655360 -CAN_F3R2_FB18655360 -CAN_F3R2_FB19655360 -CAN_F3R2_FB2655360 -CAN_F3R2_FB20655360 -CAN_F3R2_FB21655360 -CAN_F3R2_FB22655360 -CAN_F3R2_FB23655360 -CAN_F3R2_FB24655360 -CAN_F3R2_FB25655360 -CAN_F3R2_FB26655360 -CAN_F3R2_FB27655360 -CAN_F3R2_FB28655360 -CAN_F3R2_FB29655360 -CAN_F3R2_FB3655360 -CAN_F3R2_FB30655360 -CAN_F3R2_FB31655360 -CAN_F3R2_FB4655360 -CAN_F3R2_FB5655360 -CAN_F3R2_FB6655360 -CAN_F3R2_FB7655360 -CAN_F3R2_FB8655360 -CAN_F3R2_FB9655360 -CAN_F4R1_FB0655360 -CAN_F4R1_FB1655360 -CAN_F4R1_FB10655360 -CAN_F4R1_FB11655360 -CAN_F4R1_FB12655360 -CAN_F4R1_FB13655360 -CAN_F4R1_FB14655360 -CAN_F4R1_FB15655360 -CAN_F4R1_FB16655360 -CAN_F4R1_FB17655360 -CAN_F4R1_FB18655360 -CAN_F4R1_FB19655360 -CAN_F4R1_FB2655360 -CAN_F4R1_FB20655360 -CAN_F4R1_FB21655360 -CAN_F4R1_FB22655360 -CAN_F4R1_FB23655360 -CAN_F4R1_FB24655360 -CAN_F4R1_FB25655360 -CAN_F4R1_FB26655360 -CAN_F4R1_FB27655360 -CAN_F4R1_FB28655360 -CAN_F4R1_FB29655360 -CAN_F4R1_FB3655360 -CAN_F4R1_FB30655360 -CAN_F4R1_FB31655360 -CAN_F4R1_FB4655360 -CAN_F4R1_FB5655360 -CAN_F4R1_FB6655360 -CAN_F4R1_FB7655360 -CAN_F4R1_FB8655360 -CAN_F4R1_FB9655360 -CAN_F4R2_FB0655360 -CAN_F4R2_FB1655360 -CAN_F4R2_FB10655360 -CAN_F4R2_FB11655360 -CAN_F4R2_FB12655360 -CAN_F4R2_FB13655360 -CAN_F4R2_FB14655360 -CAN_F4R2_FB15655360 -CAN_F4R2_FB16655360 -CAN_F4R2_FB17655360 -CAN_F4R2_FB18655360 -CAN_F4R2_FB19655360 -CAN_F4R2_FB2655360 -CAN_F4R2_FB20655360 -CAN_F4R2_FB21655360 -CAN_F4R2_FB22655360 -CAN_F4R2_FB23655360 -CAN_F4R2_FB24655360 -CAN_F4R2_FB25655360 -CAN_F4R2_FB26655360 -CAN_F4R2_FB27655360 -CAN_F4R2_FB28655360 -CAN_F4R2_FB29655360 -CAN_F4R2_FB3655360 -CAN_F4R2_FB30655360 -CAN_F4R2_FB31655360 -CAN_F4R2_FB4655360 -CAN_F4R2_FB5655360 -CAN_F4R2_FB6655360 -CAN_F4R2_FB7655360 -CAN_F4R2_FB8655360 -CAN_F4R2_FB9655360 -CAN_F5R1_FB0655360 -CAN_F5R1_FB1655360 -CAN_F5R1_FB10655360 -CAN_F5R1_FB11655360 -CAN_F5R1_FB12655360 -CAN_F5R1_FB13655360 -CAN_F5R1_FB14655360 -CAN_F5R1_FB15655360 -CAN_F5R1_FB16655360 -CAN_F5R1_FB17655360 -CAN_F5R1_FB18655360 -CAN_F5R1_FB19655360 -CAN_F5R1_FB2655360 -CAN_F5R1_FB20655360 -CAN_F5R1_FB21655360 -CAN_F5R1_FB22655360 -CAN_F5R1_FB23655360 -CAN_F5R1_FB24655360 -CAN_F5R1_FB25655360 -CAN_F5R1_FB26655360 -CAN_F5R1_FB27655360 -CAN_F5R1_FB28655360 -CAN_F5R1_FB29655360 -CAN_F5R1_FB3655360 -CAN_F5R1_FB30655360 -CAN_F5R1_FB31655360 -CAN_F5R1_FB4655360 -CAN_F5R1_FB5655360 -CAN_F5R1_FB6655360 -CAN_F5R1_FB7655360 -CAN_F5R1_FB8655360 -CAN_F5R1_FB9655360 -CAN_F5R2_FB0655360 -CAN_F5R2_FB1655360 -CAN_F5R2_FB10655360 -CAN_F5R2_FB11655360 -CAN_F5R2_FB12655360 -CAN_F5R2_FB13655360 -CAN_F5R2_FB14655360 -CAN_F5R2_FB15655360 -CAN_F5R2_FB16655360 -CAN_F5R2_FB17655360 -CAN_F5R2_FB18655360 -CAN_F5R2_FB19655360 -CAN_F5R2_FB2655360 -CAN_F5R2_FB20655360 -CAN_F5R2_FB21655360 -CAN_F5R2_FB22655360 -CAN_F5R2_FB23655360 -CAN_F5R2_FB24655360 -CAN_F5R2_FB25655360 -CAN_F5R2_FB26655360 -CAN_F5R2_FB27655360 -CAN_F5R2_FB28655360 -CAN_F5R2_FB29655360 -CAN_F5R2_FB3655360 -CAN_F5R2_FB30655360 -CAN_F5R2_FB31655360 -CAN_F5R2_FB4655360 -CAN_F5R2_FB5655360 -CAN_F5R2_FB6655360 -CAN_F5R2_FB7655360 -CAN_F5R2_FB8655360 -CAN_F5R2_FB9655360 -CAN_F6R1_FB0655360 -CAN_F6R1_FB1655360 -CAN_F6R1_FB10655360 -CAN_F6R1_FB11655360 -CAN_F6R1_FB12655360 -CAN_F6R1_FB13655360 -CAN_F6R1_FB14655360 -CAN_F6R1_FB15655360 -CAN_F6R1_FB16655360 -CAN_F6R1_FB17655360 -CAN_F6R1_FB18655360 -CAN_F6R1_FB19655360 -CAN_F6R1_FB2655360 -CAN_F6R1_FB20655360 -CAN_F6R1_FB21655360 -CAN_F6R1_FB22655360 -CAN_F6R1_FB23655360 -CAN_F6R1_FB24655360 -CAN_F6R1_FB25655360 -CAN_F6R1_FB26655360 -CAN_F6R1_FB27655360 -CAN_F6R1_FB28655360 -CAN_F6R1_FB29655360 -CAN_F6R1_FB3655360 -CAN_F6R1_FB30655360 -CAN_F6R1_FB31655360 -CAN_F6R1_FB4655360 -CAN_F6R1_FB5655360 -CAN_F6R1_FB6655360 -CAN_F6R1_FB7655360 -CAN_F6R1_FB8655360 -CAN_F6R1_FB9655360 -CAN_F6R2_FB0655360 -CAN_F6R2_FB1655360 -CAN_F6R2_FB10655360 -CAN_F6R2_FB11655360 -CAN_F6R2_FB12655360 -CAN_F6R2_FB13655360 -CAN_F6R2_FB14655360 -CAN_F6R2_FB15655360 -CAN_F6R2_FB16655360 -CAN_F6R2_FB17655360 -CAN_F6R2_FB18655360 -CAN_F6R2_FB19655360 -CAN_F6R2_FB2655360 -CAN_F6R2_FB20655360 -CAN_F6R2_FB21655360 -CAN_F6R2_FB22655360 -CAN_F6R2_FB23655360 -CAN_F6R2_FB24655360 -CAN_F6R2_FB25655360 -CAN_F6R2_FB26655360 -CAN_F6R2_FB27655360 -CAN_F6R2_FB28655360 -CAN_F6R2_FB29655360 -CAN_F6R2_FB3655360 -CAN_F6R2_FB30655360 -CAN_F6R2_FB31655360 -CAN_F6R2_FB4655360 -CAN_F6R2_FB5655360 -CAN_F6R2_FB6655360 -CAN_F6R2_FB7655360 -CAN_F6R2_FB8655360 -CAN_F6R2_FB9655360 -CAN_F7R1_FB0655360 -CAN_F7R1_FB1655360 -CAN_F7R1_FB10655360 -CAN_F7R1_FB11655360 -CAN_F7R1_FB12655360 -CAN_F7R1_FB13655360 -CAN_F7R1_FB14655360 -CAN_F7R1_FB15655360 -CAN_F7R1_FB16655360 -CAN_F7R1_FB17655360 -CAN_F7R1_FB18655360 -CAN_F7R1_FB19655360 -CAN_F7R1_FB2655360 -CAN_F7R1_FB20655360 -CAN_F7R1_FB21655360 -CAN_F7R1_FB22655360 -CAN_F7R1_FB23655360 -CAN_F7R1_FB24655360 -CAN_F7R1_FB25655360 -CAN_F7R1_FB26655360 -CAN_F7R1_FB27655360 -CAN_F7R1_FB28655360 -CAN_F7R1_FB29655360 -CAN_F7R1_FB3655360 -CAN_F7R1_FB30655360 -CAN_F7R1_FB31655360 -CAN_F7R1_FB4655360 -CAN_F7R1_FB5655360 -CAN_F7R1_FB6655360 -CAN_F7R1_FB7655360 -CAN_F7R1_FB8655360 -CAN_F7R1_FB9655360 -CAN_F7R2_FB0655360 -CAN_F7R2_FB1655360 -CAN_F7R2_FB10655360 -CAN_F7R2_FB11655360 -CAN_F7R2_FB12655360 -CAN_F7R2_FB13655360 -CAN_F7R2_FB14655360 -CAN_F7R2_FB15655360 -CAN_F7R2_FB16655360 -CAN_F7R2_FB17655360 -CAN_F7R2_FB18655360 -CAN_F7R2_FB19655360 -CAN_F7R2_FB2655360 -CAN_F7R2_FB20655360 -CAN_F7R2_FB21655360 -CAN_F7R2_FB22655360 -CAN_F7R2_FB23655360 -CAN_F7R2_FB24655360 -CAN_F7R2_FB25655360 -CAN_F7R2_FB26655360 -CAN_F7R2_FB27655360 -CAN_F7R2_FB28655360 -CAN_F7R2_FB29655360 -CAN_F7R2_FB3655360 -CAN_F7R2_FB30655360 -CAN_F7R2_FB31655360 -CAN_F7R2_FB4655360 -CAN_F7R2_FB5655360 -CAN_F7R2_FB6655360 -CAN_F7R2_FB7655360 -CAN_F7R2_FB8655360 -CAN_F7R2_FB9655360 -CAN_F8R1_FB0655360 -CAN_F8R1_FB1655360 -CAN_F8R1_FB10655360 -CAN_F8R1_FB11655360 -CAN_F8R1_FB12655360 -CAN_F8R1_FB13655360 -CAN_F8R1_FB14655360 -CAN_F8R1_FB15655360 -CAN_F8R1_FB16655360 -CAN_F8R1_FB17655360 -CAN_F8R1_FB18655360 -CAN_F8R1_FB19655360 -CAN_F8R1_FB2655360 -CAN_F8R1_FB20655360 -CAN_F8R1_FB21655360 -CAN_F8R1_FB22655360 -CAN_F8R1_FB23655360 -CAN_F8R1_FB24655360 -CAN_F8R1_FB25655360 -CAN_F8R1_FB26655360 -CAN_F8R1_FB27655360 -CAN_F8R1_FB28655360 -CAN_F8R1_FB29655360 -CAN_F8R1_FB3655360 -CAN_F8R1_FB30655360 -CAN_F8R1_FB31655360 -CAN_F8R1_FB4655360 -CAN_F8R1_FB5655360 -CAN_F8R1_FB6655360 -CAN_F8R1_FB7655360 -CAN_F8R1_FB8655360 -CAN_F8R1_FB9655360 -CAN_F8R2_FB0655360 -CAN_F8R2_FB1655360 -CAN_F8R2_FB10655360 -CAN_F8R2_FB11655360 -CAN_F8R2_FB12655360 -CAN_F8R2_FB13655360 -CAN_F8R2_FB14655360 -CAN_F8R2_FB15655360 -CAN_F8R2_FB16655360 -CAN_F8R2_FB17655360 -CAN_F8R2_FB18655360 -CAN_F8R2_FB19655360 -CAN_F8R2_FB2655360 -CAN_F8R2_FB20655360 -CAN_F8R2_FB21655360 -CAN_F8R2_FB22655360 -CAN_F8R2_FB23655360 -CAN_F8R2_FB24655360 -CAN_F8R2_FB25655360 -CAN_F8R2_FB26655360 -CAN_F8R2_FB27655360 -CAN_F8R2_FB28655360 -CAN_F8R2_FB29655360 -CAN_F8R2_FB3655360 -CAN_F8R2_FB30655360 -CAN_F8R2_FB31655360 -CAN_F8R2_FB4655360 -CAN_F8R2_FB5655360 -CAN_F8R2_FB6655360 -CAN_F8R2_FB7655360 -CAN_F8R2_FB8655360 -CAN_F8R2_FB9655360 -CAN_F9R1_FB0655360 -CAN_F9R1_FB1655360 -CAN_F9R1_FB10655360 -CAN_F9R1_FB11655360 -CAN_F9R1_FB12655360 -CAN_F9R1_FB13655360 -CAN_F9R1_FB14655360 -CAN_F9R1_FB15655360 -CAN_F9R1_FB16655360 -CAN_F9R1_FB17655360 -CAN_F9R1_FB18655360 -CAN_F9R1_FB19655360 -CAN_F9R1_FB2655360 -CAN_F9R1_FB20655360 -CAN_F9R1_FB21655360 -CAN_F9R1_FB22655360 -CAN_F9R1_FB23655360 -CAN_F9R1_FB24655360 -CAN_F9R1_FB25655360 -CAN_F9R1_FB26655360 -CAN_F9R1_FB27655360 -CAN_F9R1_FB28655360 -CAN_F9R1_FB29655360 -CAN_F9R1_FB3655360 -CAN_F9R1_FB30655360 -CAN_F9R1_FB31655360 -CAN_F9R1_FB4655360 -CAN_F9R1_FB5655360 -CAN_F9R1_FB6655360 -CAN_F9R1_FB7655360 -CAN_F9R1_FB8655360 -CAN_F9R1_FB9655360 -CAN_F9R2_FB0655360 -CAN_F9R2_FB1655360 -CAN_F9R2_FB10655360 -CAN_F9R2_FB11655360 -CAN_F9R2_FB12655360 -CAN_F9R2_FB13655360 -CAN_F9R2_FB14655360 -CAN_F9R2_FB15655360 -CAN_F9R2_FB16655360 -CAN_F9R2_FB17655360 -CAN_F9R2_FB18655360 -CAN_F9R2_FB19655360 -CAN_F9R2_FB2655360 -CAN_F9R2_FB20655360 -CAN_F9R2_FB21655360 -CAN_F9R2_FB22655360 -CAN_F9R2_FB23655360 -CAN_F9R2_FB24655360 -CAN_F9R2_FB25655360 -CAN_F9R2_FB26655360 -CAN_F9R2_FB27655360 -CAN_F9R2_FB28655360 -CAN_F9R2_FB29655360 -CAN_F9R2_FB3655360 -CAN_F9R2_FB30655360 -CAN_F9R2_FB31655360 -CAN_F9R2_FB4655360 -CAN_F9R2_FB5655360 -CAN_F9R2_FB6655360 -CAN_F9R2_FB7655360 -CAN_F9R2_FB8655360 -CAN_F9R2_FB9655360 -CAN_FA1R_FACT655360 -CAN_FA1R_FACT0655360 -CAN_FA1R_FACT1655360 -CAN_FA1R_FACT10655360 -CAN_FA1R_FACT11655360 -CAN_FA1R_FACT12655360 -CAN_FA1R_FACT13655360 -CAN_FA1R_FACT2655360 -CAN_FA1R_FACT3655360 -CAN_FA1R_FACT4655360 -CAN_FA1R_FACT5655360 -CAN_FA1R_FACT6655360 -CAN_FA1R_FACT7655360 -CAN_FA1R_FACT8655360 -CAN_FA1R_FACT9655360 -CAN_FFA1R_FFA655360 -CAN_FFA1R_FFA0655360 -CAN_FFA1R_FFA1655360 -CAN_FFA1R_FFA10655360 -CAN_FFA1R_FFA11655360 -CAN_FFA1R_FFA12655360 -CAN_FFA1R_FFA13655360 -CAN_FFA1R_FFA2655360 -CAN_FFA1R_FFA3655360 -CAN_FFA1R_FFA4655360 -CAN_FFA1R_FFA5655360 -CAN_FFA1R_FFA6655360 -CAN_FFA1R_FFA7655360 -CAN_FFA1R_FFA8655360 -CAN_FFA1R_FFA9655360 -CAN_FIFO_OVERRUN4anon_enum_40 -CAN_FLAG_GOTDUMMY655360 -CAN_FM1R_FBM655360 -CAN_FM1R_FBM0655360 -CAN_FM1R_FBM1655360 -CAN_FM1R_FBM10655360 -CAN_FM1R_FBM11655360 -CAN_FM1R_FBM12655360 -CAN_FM1R_FBM13655360 -CAN_FM1R_FBM2655360 -CAN_FM1R_FBM3655360 -CAN_FM1R_FBM4655360 -CAN_FM1R_FBM5655360 -CAN_FM1R_FBM6655360 -CAN_FM1R_FBM7655360 -CAN_FM1R_FBM8655360 -CAN_FM1R_FBM9655360 -CAN_FMR_FINIT655360 -CAN_FS1R_FSC655360 -CAN_FS1R_FSC0655360 -CAN_FS1R_FSC1655360 -CAN_FS1R_FSC10655360 -CAN_FS1R_FSC11655360 -CAN_FS1R_FSC12655360 -CAN_FS1R_FSC13655360 -CAN_FS1R_FSC2655360 -CAN_FS1R_FSC3655360 -CAN_FS1R_FSC4655360 -CAN_FS1R_FSC5655360 -CAN_FS1R_FSC6655360 -CAN_FS1R_FSC7655360 -CAN_FS1R_FSC8655360 -CAN_FS1R_FSC9655360 -CAN_ID_MASK655360 -CAN_ID_PREFIX655360 -CAN_IER_BOFIE655360 -CAN_IER_EPVIE655360 -CAN_IER_ERRIE655360 -CAN_IER_EWGIE655360 -CAN_IER_FFIE0655360 -CAN_IER_FFIE1655360 -CAN_IER_FMPIE0655360 -CAN_IER_FMPIE1655360 -CAN_IER_FOVIE0655360 -CAN_IER_FOVIE1655360 -CAN_IER_LECIE655360 -CAN_IER_SLKIE655360 -CAN_IER_TMEIE655360 -CAN_IER_WKUIE655360 -CAN_INMESSAGE_SIZE655360 -CAN_MCR_ABOM655360 -CAN_MCR_AWUM655360 -CAN_MCR_INRQ655360 -CAN_MCR_NART655360 -CAN_MCR_RESET655360 -CAN_MCR_RFLM655360 -CAN_MCR_SLEEP655360 -CAN_MCR_TTCM655360 -CAN_MCR_TXFP655360 -CAN_MSR_ERRI655360 -CAN_MSR_INAK655360 -CAN_MSR_RX655360 -CAN_MSR_RXM655360 -CAN_MSR_SAMP655360 -CAN_MSR_SLAK655360 -CAN_MSR_SLAKI655360 -CAN_MSR_TXM655360 -CAN_MSR_WKUI655360 -CAN_OK4anon_enum_40 -CAN_RDH0R_DATA4655360 -CAN_RDH0R_DATA5655360 -CAN_RDH0R_DATA6655360 -CAN_RDH0R_DATA7655360 -CAN_RDH1R_DATA4655360 -CAN_RDH1R_DATA5655360 -CAN_RDH1R_DATA6655360 -CAN_RDH1R_DATA7655360 -CAN_RDL0R_DATA0655360 -CAN_RDL0R_DATA1655360 -CAN_RDL0R_DATA2655360 -CAN_RDL0R_DATA3655360 -CAN_RDL1R_DATA0655360 -CAN_RDL1R_DATA1655360 -CAN_RDL1R_DATA2655360 -CAN_RDL1R_DATA3655360 -CAN_RDT0R_DLC655360 -CAN_RDT0R_FMI655360 -CAN_RDT0R_TIME655360 -CAN_RDT1R_DLC655360 -CAN_RDT1R_FMI655360 -CAN_RDT1R_TIME655360 -CAN_READY4anon_enum_40 -CAN_RF0R_FMP0655360 -CAN_RF0R_FOVR0655360 -CAN_RF0R_FULL0655360 -CAN_RF0R_RFOM0655360 -CAN_RF1R_FMP1655360 -CAN_RF1R_FOVR1655360 -CAN_RF1R_FULL1655360 -CAN_RF1R_RFOM1655360 -CAN_RI0R_EXID655360 -CAN_RI0R_IDE655360 -CAN_RI0R_RTR655360 -CAN_RI0R_STID655360 -CAN_RI1R_EXID655360 -CAN_RI1R_IDE655360 -CAN_RI1R_RTR655360 -CAN_RI1R_STID655360 -CAN_STOP4anon_enum_40 -CAN_TDH0R_DATA4655360 -CAN_TDH0R_DATA5655360 -CAN_TDH0R_DATA6655360 -CAN_TDH0R_DATA7655360 -CAN_TDH1R_DATA4655360 -CAN_TDH1R_DATA5655360 -CAN_TDH1R_DATA6655360 -CAN_TDH1R_DATA7655360 -CAN_TDH2R_DATA4655360 -CAN_TDH2R_DATA5655360 -CAN_TDH2R_DATA6655360 -CAN_TDH2R_DATA7655360 -CAN_TDL0R_DATA0655360 -CAN_TDL0R_DATA1655360 -CAN_TDL0R_DATA2655360 -CAN_TDL0R_DATA3655360 -CAN_TDL1R_DATA0655360 -CAN_TDL1R_DATA1655360 -CAN_TDL1R_DATA2655360 -CAN_TDL1R_DATA3655360 -CAN_TDL2R_DATA0655360 -CAN_TDL2R_DATA1655360 -CAN_TDL2R_DATA2655360 -CAN_TDL2R_DATA3655360 -CAN_TDT0R_DLC655360 -CAN_TDT0R_TGT655360 -CAN_TDT0R_TIME655360 -CAN_TDT1R_DLC655360 -CAN_TDT1R_TGT655360 -CAN_TDT1R_TIME655360 -CAN_TDT2R_DLC655360 -CAN_TDT2R_TGT655360 -CAN_TDT2R_TIME655360 -CAN_TI0R_EXID655360 -CAN_TI0R_IDE655360 -CAN_TI0R_RTR655360 -CAN_TI0R_STID655360 -CAN_TI0R_TXRQ655360 -CAN_TI1R_EXID655360 -CAN_TI1R_IDE655360 -CAN_TI1R_RTR655360 -CAN_TI1R_STID655360 -CAN_TI1R_TXRQ655360 -CAN_TI2R_EXID655360 -CAN_TI2R_IDE655360 -CAN_TI2R_RTR655360 -CAN_TI2R_STID655360 -CAN_TI2R_TXRQ655360 -CAN_TSR_ABRQ0655360 -CAN_TSR_ABRQ1655360 -CAN_TSR_ABRQ2655360 -CAN_TSR_ALST0655360 -CAN_TSR_ALST1655360 -CAN_TSR_ALST2655360 -CAN_TSR_CODE655360 -CAN_TSR_LOW655360 -CAN_TSR_LOW0655360 -CAN_TSR_LOW1655360 -CAN_TSR_LOW2655360 -CAN_TSR_RQCP0655360 -CAN_TSR_RQCP1655360 -CAN_TSR_RQCP2655360 -CAN_TSR_TERR0655360 -CAN_TSR_TERR1655360 -CAN_TSR_TERR2655360 -CAN_TSR_TME655360 -CAN_TSR_TME0655360 -CAN_TSR_TME1655360 -CAN_TSR_TME2655360 -CAN_TSR_TXOK0655360 -CAN_TSR_TXOK1655360 -CAN_TSR_TXOK2655360 -CAN_get_status16()0CAN_status -CAN_get_status1024()0CAN_status -CAN_message40960anon_struct_3 -CAN_messagebuf_pop16()0CAN_message * -CAN_messagebuf_pop1024()0CAN_message * -CAN_messagebuf_push16(CAN_message *msg)0int -CAN_reinit16()0void -CAN_reinit1024()0void -CAN_setup16()0void -CAN_setup1024()0void -CAN_status40960anon_enum_4 -CEC655360 -CEC_BASE655360 -CEC_CFGR_BRDNOGEN655360 -CEC_CFGR_BREGEN655360 -CEC_CFGR_BRESTP655360 -CEC_CFGR_LBPEGEN655360 -CEC_CFGR_LSTN655360 -CEC_CFGR_OAR655360 -CEC_CFGR_RXTOL655360 -CEC_CFGR_SFT655360 -CEC_CFGR_SFTOPT655360 -CEC_CR_CECEN655360 -CEC_CR_TXEOM655360 -CEC_CR_TXSOM655360 -CEC_IER_ARBLSTIE655360 -CEC_IER_BREIE655360 -CEC_IER_LBPEIE655360 -CEC_IER_RXACKEIE655360 -CEC_IER_RXBRIE655360 -CEC_IER_RXENDIE655360 -CEC_IER_RXOVRIE655360 -CEC_IER_SBPEIE655360 -CEC_IER_TXACKEIE655360 -CEC_IER_TXBRIE655360 -CEC_IER_TXENDIE655360 -CEC_IER_TXERRIE655360 -CEC_IER_TXUDRIE655360 -CEC_ISR_ARBLST655360 -CEC_ISR_BRE655360 -CEC_ISR_LBPE655360 -CEC_ISR_RXACKE655360 -CEC_ISR_RXBR655360 -CEC_ISR_RXEND655360 -CEC_ISR_RXOVR655360 -CEC_ISR_SBPE655360 -CEC_ISR_TXACKE655360 -CEC_ISR_TXBR655360 -CEC_ISR_TXEND655360 -CEC_ISR_TXERR655360 -CEC_ISR_TXUDR655360 -CEC_TXDR_RXD655360 -CEC_TXDR_TXD655360 -CLEAR_BIT131072(REG,BIT)0 -CLEAR_COMM_FEATURE655360 -CLEAR_CTR_RX131072(R)0 -CLEAR_CTR_RX_TX131072(R)0 -CLEAR_CTR_TX131072(R)0 -CLEAR_DTOG_RX131072(R)0 -CLEAR_DTOG_TX131072(R)0 -CLEAR_FEATURE655360 -CLEAR_REG131072(REG)0 -CLRLINECODING131072()0 -CMD_BCAST655360 -CMD_TOGGLE655360 -CNTR64anon_struct_00volatile uint32_t -CONCAT131072(a,b)0 -CONFIGURATION_DESCRIPTOR655360 -CONTROL_DTR655360 -CONTROL_REQUEST_TYPE655360 -CONTROL_RTS655360 -CRC655360 -CRC_BASE655360 -CRC_CR_RESET655360 -CRC_CR_REV_IN655360 -CRC_CR_REV_IN_0655360 -CRC_CR_REV_IN_1655360 -CRC_CR_REV_OUT655360 -CRC_DR_DR655360 -CRC_IDR_IDR655360 -CRC_INIT_INIT655360 -CRS655360 -CRS_BASE655360 -CRS_CFGR_FELIM655360 -CRS_CFGR_RELOAD655360 -CRS_CFGR_SYNCDIV655360 -CRS_CFGR_SYNCDIV_0655360 -CRS_CFGR_SYNCDIV_1655360 -CRS_CFGR_SYNCDIV_2655360 -CRS_CFGR_SYNCPOL655360 -CRS_CFGR_SYNCSRC655360 -CRS_CFGR_SYNCSRC_0655360 -CRS_CFGR_SYNCSRC_1655360 -CRS_CR_AUTOTRIMEN655360 -CRS_CR_CEN655360 -CRS_CR_ERRIE655360 -CRS_CR_ESYNCIE655360 -CRS_CR_SWSYNC655360 -CRS_CR_SYNCOKIE655360 -CRS_CR_SYNCWARNIE655360 -CRS_CR_TRIM655360 -CRS_ICR_ERRC655360 -CRS_ICR_ESYNCC655360 -CRS_ICR_SYNCOKC655360 -CRS_ICR_SYNCWARNC655360 -CRS_ISR_ERRF655360 -CRS_ISR_ESYNCF655360 -CRS_ISR_FECAP655360 -CRS_ISR_FEDIR655360 -CRS_ISR_SYNCERR655360 -CRS_ISR_SYNCMISS655360 -CRS_ISR_SYNCOKF655360 -CRS_ISR_SYNCWARNF655360 -CRS_ISR_TRIMOVF655360 -DADDR64anon_struct_00volatile uint32_t -DBGMCU655360 -DBGMCU_APB1_FZ_DBG_CAN_STOP655360 -DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT655360 -DBGMCU_APB1_FZ_DBG_IWDG_STOP655360 -DBGMCU_APB1_FZ_DBG_RTC_STOP655360 -DBGMCU_APB1_FZ_DBG_TIM14_STOP655360 -DBGMCU_APB1_FZ_DBG_TIM2_STOP655360 -DBGMCU_APB1_FZ_DBG_TIM3_STOP655360 -DBGMCU_APB1_FZ_DBG_WWDG_STOP655360 -DBGMCU_APB2_FZ_DBG_TIM16_STOP655360 -DBGMCU_APB2_FZ_DBG_TIM17_STOP655360 -DBGMCU_APB2_FZ_DBG_TIM1_STOP655360 -DBGMCU_BASE655360 -DBGMCU_CR_DBG_STANDBY655360 -DBGMCU_CR_DBG_STOP655360 -DBGMCU_IDCODE_DEV_ID655360 -DBGMCU_IDCODE_REV_ID655360 -DBGMCU_IDCODE_REV_ID_0655360 -DBGMCU_IDCODE_REV_ID_1655360 -DBGMCU_IDCODE_REV_ID_10655360 -DBGMCU_IDCODE_REV_ID_11655360 -DBGMCU_IDCODE_REV_ID_12655360 -DBGMCU_IDCODE_REV_ID_13655360 -DBGMCU_IDCODE_REV_ID_14655360 -DBGMCU_IDCODE_REV_ID_15655360 -DBGMCU_IDCODE_REV_ID_2655360 -DBGMCU_IDCODE_REV_ID_3655360 -DBGMCU_IDCODE_REV_ID_4655360 -DBGMCU_IDCODE_REV_ID_5655360 -DBGMCU_IDCODE_REV_ID_6655360 -DBGMCU_IDCODE_REV_ID_7655360 -DBGMCU_IDCODE_REV_ID_8655360 -DBGMCU_IDCODE_REV_ID_9655360 -DEVICE_DESCRIPTOR655360 -DEVICE_DESCRIPTOR_SIZE_BYTE655360 -DEVICE_QALIFIER_DESCRIPTOR655360 -DEVICE_QALIFIER_SIZE_BYTE655360 -DMA1655360 -DMA1_BASE655360 -DMA1_Channel1655360 -DMA1_Channel1_BASE655360 -DMA1_Channel2655360 -DMA1_Channel2_BASE655360 -DMA1_Channel3655360 -DMA1_Channel3_BASE655360 -DMA1_Channel4655360 -DMA1_Channel4_5_6_7_IRQHandler655360 -DMA1_Channel4_5_6_7_IRQn655360 -DMA1_Channel4_BASE655360 -DMA1_Channel5655360 -DMA1_Channel5_BASE655360 -DMA1_Channel6655360 -DMA1_Channel6_BASE655360 -DMA1_Channel7655360 -DMA1_Channel7_BASE655360 -DMA_CCR_CIRC655360 -DMA_CCR_DIR655360 -DMA_CCR_EN655360 -DMA_CCR_HTIE655360 -DMA_CCR_MEM2MEM655360 -DMA_CCR_MINC655360 -DMA_CCR_MSIZE655360 -DMA_CCR_MSIZE_0655360 -DMA_CCR_MSIZE_1655360 -DMA_CCR_PINC655360 -DMA_CCR_PL655360 -DMA_CCR_PL_0655360 -DMA_CCR_PL_1655360 -DMA_CCR_PSIZE655360 -DMA_CCR_PSIZE_0655360 -DMA_CCR_PSIZE_1655360 -DMA_CCR_TCIE655360 -DMA_CCR_TEIE655360 -DMA_CMAR_MA655360 -DMA_CNDTR_NDT655360 -DMA_CPAR_PA655360 -DMA_IFCR_CGIF1655360 -DMA_IFCR_CGIF2655360 -DMA_IFCR_CGIF3655360 -DMA_IFCR_CGIF4655360 -DMA_IFCR_CGIF5655360 -DMA_IFCR_CGIF6655360 -DMA_IFCR_CGIF7655360 -DMA_IFCR_CHTIF1655360 -DMA_IFCR_CHTIF2655360 -DMA_IFCR_CHTIF3655360 -DMA_IFCR_CHTIF4655360 -DMA_IFCR_CHTIF5655360 -DMA_IFCR_CHTIF6655360 -DMA_IFCR_CHTIF7655360 -DMA_IFCR_CTCIF1655360 -DMA_IFCR_CTCIF2655360 -DMA_IFCR_CTCIF3655360 -DMA_IFCR_CTCIF4655360 -DMA_IFCR_CTCIF5655360 -DMA_IFCR_CTCIF6655360 -DMA_IFCR_CTCIF7655360 -DMA_IFCR_CTEIF1655360 -DMA_IFCR_CTEIF2655360 -DMA_IFCR_CTEIF3655360 -DMA_IFCR_CTEIF4655360 -DMA_IFCR_CTEIF5655360 -DMA_IFCR_CTEIF6655360 -DMA_IFCR_CTEIF7655360 -DMA_ISR_GIF1655360 -DMA_ISR_GIF2655360 -DMA_ISR_GIF3655360 -DMA_ISR_GIF4655360 -DMA_ISR_GIF5655360 -DMA_ISR_GIF6655360 -DMA_ISR_GIF7655360 -DMA_ISR_HTIF1655360 -DMA_ISR_HTIF2655360 -DMA_ISR_HTIF3655360 -DMA_ISR_HTIF4655360 -DMA_ISR_HTIF5655360 -DMA_ISR_HTIF6655360 -DMA_ISR_HTIF7655360 -DMA_ISR_TCIF1655360 -DMA_ISR_TCIF2655360 -DMA_ISR_TCIF3655360 -DMA_ISR_TCIF4655360 -DMA_ISR_TCIF5655360 -DMA_ISR_TCIF6655360 -DMA_ISR_TCIF7655360 -DMA_ISR_TEIF1655360 -DMA_ISR_TEIF2655360 -DMA_ISR_TEIF3655360 -DMA_ISR_TEIF4655360 -DMA_ISR_TEIF5655360 -DMA_ISR_TEIF6655360 -DMA_ISR_TEIF7655360 -EP64anon_struct_20volatile USB_EPDATA_TypeDef -EP0DATABUF_SIZE655360 -EP0_Handler16(ep_t ep)0uint16_t -EP1_Handler16(ep_t ep)0uint16_t -EP2_Handler16(ep_t ep)0uint16_t -EP_Init16(uint8_t number, uint8_t type, uint16_t addr_tx, uint16_t addr_rx, uint16_t (*func)(ep_t ep))0void -EP_Init1024(uint8_t number, uint8_t type, uint16_t addr_tx, uint16_t addr_rx, uint16_t (*func)(ep_t ep))0void -EP_Read16(uint8_t number, uint8_t *buf)0int -EP_Read1024(uint8_t number, uint8_t *buf)0int -EP_TYPE_BULK655360 -EP_TYPE_CONTROL655360 -EP_TYPE_INTERRUPT655360 -EP_TYPE_ISO655360 -EP_Write16(uint8_t number, const uint8_t *buf, uint16_t size)0void -EP_Write1024(uint8_t number, const uint8_t *buf, uint16_t size)0void -EP_WriteIRQ16(uint8_t number, const uint8_t *buf, uint16_t size)0void -EP_WriteIRQ1024(uint8_t number, const uint8_t *buf, uint16_t size)0void -EPnR64anon_struct_00volatile uint32_t -EXTI655360 -EXTI_BASE655360 -EXTI_EMR_MR0655360 -EXTI_EMR_MR1655360 -EXTI_EMR_MR10655360 -EXTI_EMR_MR11655360 -EXTI_EMR_MR12655360 -EXTI_EMR_MR13655360 -EXTI_EMR_MR14655360 -EXTI_EMR_MR15655360 -EXTI_EMR_MR16655360 -EXTI_EMR_MR17655360 -EXTI_EMR_MR19655360 -EXTI_EMR_MR2655360 -EXTI_EMR_MR21655360 -EXTI_EMR_MR22655360 -EXTI_EMR_MR23655360 -EXTI_EMR_MR25655360 -EXTI_EMR_MR27655360 -EXTI_EMR_MR3655360 -EXTI_EMR_MR4655360 -EXTI_EMR_MR5655360 -EXTI_EMR_MR6655360 -EXTI_EMR_MR7655360 -EXTI_EMR_MR8655360 -EXTI_EMR_MR9655360 -EXTI_FTSR_TR0655360 -EXTI_FTSR_TR1655360 -EXTI_FTSR_TR10655360 -EXTI_FTSR_TR11655360 -EXTI_FTSR_TR12655360 -EXTI_FTSR_TR13655360 -EXTI_FTSR_TR14655360 -EXTI_FTSR_TR15655360 -EXTI_FTSR_TR16655360 -EXTI_FTSR_TR17655360 -EXTI_FTSR_TR19655360 -EXTI_FTSR_TR2655360 -EXTI_FTSR_TR3655360 -EXTI_FTSR_TR4655360 -EXTI_FTSR_TR5655360 -EXTI_FTSR_TR6655360 -EXTI_FTSR_TR7655360 -EXTI_FTSR_TR8655360 -EXTI_FTSR_TR9655360 -EXTI_IMR_MR0655360 -EXTI_IMR_MR1655360 -EXTI_IMR_MR10655360 -EXTI_IMR_MR11655360 -EXTI_IMR_MR12655360 -EXTI_IMR_MR13655360 -EXTI_IMR_MR14655360 -EXTI_IMR_MR15655360 -EXTI_IMR_MR16655360 -EXTI_IMR_MR17655360 -EXTI_IMR_MR19655360 -EXTI_IMR_MR2655360 -EXTI_IMR_MR21655360 -EXTI_IMR_MR22655360 -EXTI_IMR_MR23655360 -EXTI_IMR_MR25655360 -EXTI_IMR_MR27655360 -EXTI_IMR_MR3655360 -EXTI_IMR_MR4655360 -EXTI_IMR_MR5655360 -EXTI_IMR_MR6655360 -EXTI_IMR_MR7655360 -EXTI_IMR_MR8655360 -EXTI_IMR_MR9655360 -EXTI_PR_PR0655360 -EXTI_PR_PR1655360 -EXTI_PR_PR10655360 -EXTI_PR_PR11655360 -EXTI_PR_PR12655360 -EXTI_PR_PR13655360 -EXTI_PR_PR14655360 -EXTI_PR_PR15655360 -EXTI_PR_PR16655360 -EXTI_PR_PR17655360 -EXTI_PR_PR19655360 -EXTI_PR_PR2655360 -EXTI_PR_PR3655360 -EXTI_PR_PR4655360 -EXTI_PR_PR5655360 -EXTI_PR_PR6655360 -EXTI_PR_PR7655360 -EXTI_PR_PR8655360 -EXTI_PR_PR9655360 -EXTI_RTSR_TR0655360 -EXTI_RTSR_TR1655360 -EXTI_RTSR_TR10655360 -EXTI_RTSR_TR11655360 -EXTI_RTSR_TR12655360 -EXTI_RTSR_TR13655360 -EXTI_RTSR_TR14655360 -EXTI_RTSR_TR15655360 -EXTI_RTSR_TR16655360 -EXTI_RTSR_TR17655360 -EXTI_RTSR_TR19655360 -EXTI_RTSR_TR2655360 -EXTI_RTSR_TR3655360 -EXTI_RTSR_TR4655360 -EXTI_RTSR_TR5655360 -EXTI_RTSR_TR6655360 -EXTI_RTSR_TR7655360 -EXTI_RTSR_TR8655360 -EXTI_RTSR_TR9655360 -EXTI_SWIER_SWIER0655360 -EXTI_SWIER_SWIER1655360 -EXTI_SWIER_SWIER10655360 -EXTI_SWIER_SWIER11655360 -EXTI_SWIER_SWIER12655360 -EXTI_SWIER_SWIER13655360 -EXTI_SWIER_SWIER14655360 -EXTI_SWIER_SWIER15655360 -EXTI_SWIER_SWIER16655360 -EXTI_SWIER_SWIER17655360 -EXTI_SWIER_SWIER19655360 -EXTI_SWIER_SWIER2655360 -EXTI_SWIER_SWIER3655360 -EXTI_SWIER_SWIER4655360 -EXTI_SWIER_SWIER5655360 -EXTI_SWIER_SWIER6655360 -EXTI_SWIER_SWIER7655360 -EXTI_SWIER_SWIER8655360 -EXTI_SWIER_SWIER9655360 -FILE40960_IO_FILE -FLASH655360 -FLASH_ACR_LATENCY655360 -FLASH_ACR_PRFTBE655360 -FLASH_ACR_PRFTBS655360 -FLASH_AR_FAR655360 -FLASH_BASE655360 -FLASH_CR_EOPIE655360 -FLASH_CR_ERRIE655360 -FLASH_CR_LOCK655360 -FLASH_CR_MER655360 -FLASH_CR_OBL_LAUNCH655360 -FLASH_CR_OPTER655360 -FLASH_CR_OPTPG655360 -FLASH_CR_OPTWRE655360 -FLASH_CR_PER655360 -FLASH_CR_PG655360 -FLASH_CR_STRT655360 -FLASH_FKEY1655360 -FLASH_FKEY2655360 -FLASH_KEYR_FKEYR655360 -FLASH_OBR_BOOT1655360 -FLASH_OBR_IWDG_SW655360 -FLASH_OBR_OPTERR655360 -FLASH_OBR_RDPRT1655360 -FLASH_OBR_RDPRT2655360 -FLASH_OBR_USER655360 -FLASH_OBR_VDDA_ANALOG655360 -FLASH_OBR_VDDA_MONITOR655360 -FLASH_OBR_nBOOT1655360 -FLASH_OBR_nRST_STDBY655360 -FLASH_OBR_nRST_STOP655360 -FLASH_OPTKEY1655360 -FLASH_OPTKEY2655360 -FLASH_OPTKEYR_OPTKEYR655360 -FLASH_R_BASE655360 -FLASH_SR_BSY655360 -FLASH_SR_EOP655360 -FLASH_SR_PGERR655360 -FLASH_SR_WRPERR655360 -FLASH_SR_WRPRTERR655360 -FLASH_WRPR_WRP655360 -FNR64anon_struct_00volatile uint32_t -FORMUSART131072(X)0 -GET_COMM_FEATURE655360 -GET_CONFIGURATION655360 -GET_DESCRIPTOR655360 -GET_ENCAPSULATED_RESPONSE655360 -GET_INTERFACE655360 -GET_LINE_CODING655360 -GET_STATUS655360 -GPIOA655360 -GPIOA_BASE655360 -GPIOB655360 -GPIOB_BASE655360 -GPIOC655360 -GPIOC_BASE655360 -GPIOF655360 -GPIOF_BASE655360 -GPIO_AFRH_AFRH0655360 -GPIO_AFRH_AFRH1655360 -GPIO_AFRH_AFRH2655360 -GPIO_AFRH_AFRH3655360 -GPIO_AFRH_AFRH4655360 -GPIO_AFRH_AFRH5655360 -GPIO_AFRH_AFRH6655360 -GPIO_AFRH_AFRH7655360 -GPIO_AFRL_AFRL0655360 -GPIO_AFRL_AFRL1655360 -GPIO_AFRL_AFRL2655360 -GPIO_AFRL_AFRL3655360 -GPIO_AFRL_AFRL4655360 -GPIO_AFRL_AFRL5655360 -GPIO_AFRL_AFRL6655360 -GPIO_AFRL_AFRL7655360 -GPIO_BRR_BR_0655360 -GPIO_BRR_BR_1655360 -GPIO_BRR_BR_10655360 -GPIO_BRR_BR_11655360 -GPIO_BRR_BR_12655360 -GPIO_BRR_BR_13655360 -GPIO_BRR_BR_14655360 -GPIO_BRR_BR_15655360 -GPIO_BRR_BR_2655360 -GPIO_BRR_BR_3655360 -GPIO_BRR_BR_4655360 -GPIO_BRR_BR_5655360 -GPIO_BRR_BR_6655360 -GPIO_BRR_BR_7655360 -GPIO_BRR_BR_8655360 -GPIO_BRR_BR_9655360 -GPIO_BSRR_BR_0655360 -GPIO_BSRR_BR_1655360 -GPIO_BSRR_BR_10655360 -GPIO_BSRR_BR_11655360 -GPIO_BSRR_BR_12655360 -GPIO_BSRR_BR_13655360 -GPIO_BSRR_BR_14655360 -GPIO_BSRR_BR_15655360 -GPIO_BSRR_BR_2655360 -GPIO_BSRR_BR_3655360 -GPIO_BSRR_BR_4655360 -GPIO_BSRR_BR_5655360 -GPIO_BSRR_BR_6655360 -GPIO_BSRR_BR_7655360 -GPIO_BSRR_BR_8655360 -GPIO_BSRR_BR_9655360 -GPIO_BSRR_BS_0655360 -GPIO_BSRR_BS_1655360 -GPIO_BSRR_BS_10655360 -GPIO_BSRR_BS_11655360 -GPIO_BSRR_BS_12655360 -GPIO_BSRR_BS_13655360 -GPIO_BSRR_BS_14655360 -GPIO_BSRR_BS_15655360 -GPIO_BSRR_BS_2655360 -GPIO_BSRR_BS_3655360 -GPIO_BSRR_BS_4655360 -GPIO_BSRR_BS_5655360 -GPIO_BSRR_BS_6655360 -GPIO_BSRR_BS_7655360 -GPIO_BSRR_BS_8655360 -GPIO_BSRR_BS_9655360 -GPIO_IDR_0655360 -GPIO_IDR_1655360 -GPIO_IDR_10655360 -GPIO_IDR_11655360 -GPIO_IDR_12655360 -GPIO_IDR_13655360 -GPIO_IDR_14655360 -GPIO_IDR_15655360 -GPIO_IDR_2655360 -GPIO_IDR_3655360 -GPIO_IDR_4655360 -GPIO_IDR_5655360 -GPIO_IDR_6655360 -GPIO_IDR_7655360 -GPIO_IDR_8655360 -GPIO_IDR_9655360 -GPIO_LCKR_LCK0655360 -GPIO_LCKR_LCK1655360 -GPIO_LCKR_LCK10655360 -GPIO_LCKR_LCK11655360 -GPIO_LCKR_LCK12655360 -GPIO_LCKR_LCK13655360 -GPIO_LCKR_LCK14655360 -GPIO_LCKR_LCK15655360 -GPIO_LCKR_LCK2655360 -GPIO_LCKR_LCK3655360 -GPIO_LCKR_LCK4655360 -GPIO_LCKR_LCK5655360 -GPIO_LCKR_LCK6655360 -GPIO_LCKR_LCK7655360 -GPIO_LCKR_LCK8655360 -GPIO_LCKR_LCK9655360 -GPIO_LCKR_LCKK655360 -GPIO_MODER_MODER0655360 -GPIO_MODER_MODER0_0655360 -GPIO_MODER_MODER0_1655360 -GPIO_MODER_MODER0_AF655360 -GPIO_MODER_MODER0_AI655360 -GPIO_MODER_MODER0_O655360 -GPIO_MODER_MODER1655360 -GPIO_MODER_MODER10655360 -GPIO_MODER_MODER10_0655360 -GPIO_MODER_MODER10_1655360 -GPIO_MODER_MODER10_AF655360 -GPIO_MODER_MODER10_AI655360 -GPIO_MODER_MODER10_O655360 -GPIO_MODER_MODER11655360 -GPIO_MODER_MODER11_0655360 -GPIO_MODER_MODER11_1655360 -GPIO_MODER_MODER11_AF655360 -GPIO_MODER_MODER11_AI655360 -GPIO_MODER_MODER11_O655360 -GPIO_MODER_MODER12655360 -GPIO_MODER_MODER12_0655360 -GPIO_MODER_MODER12_1655360 -GPIO_MODER_MODER12_AF655360 -GPIO_MODER_MODER12_AI655360 -GPIO_MODER_MODER12_O655360 -GPIO_MODER_MODER13655360 -GPIO_MODER_MODER13_0655360 -GPIO_MODER_MODER13_1655360 -GPIO_MODER_MODER13_AF655360 -GPIO_MODER_MODER13_AI655360 -GPIO_MODER_MODER13_O655360 -GPIO_MODER_MODER14655360 -GPIO_MODER_MODER14_0655360 -GPIO_MODER_MODER14_1655360 -GPIO_MODER_MODER14_AF655360 -GPIO_MODER_MODER14_AI655360 -GPIO_MODER_MODER14_O655360 -GPIO_MODER_MODER15655360 -GPIO_MODER_MODER15_0655360 -GPIO_MODER_MODER15_1655360 -GPIO_MODER_MODER15_AF655360 -GPIO_MODER_MODER15_AI655360 -GPIO_MODER_MODER15_O655360 -GPIO_MODER_MODER1_0655360 -GPIO_MODER_MODER1_1655360 -GPIO_MODER_MODER1_AF655360 -GPIO_MODER_MODER1_AI655360 -GPIO_MODER_MODER1_O655360 -GPIO_MODER_MODER2655360 -GPIO_MODER_MODER2_0655360 -GPIO_MODER_MODER2_1655360 -GPIO_MODER_MODER2_AF655360 -GPIO_MODER_MODER2_AI655360 -GPIO_MODER_MODER2_O655360 -GPIO_MODER_MODER3655360 -GPIO_MODER_MODER3_0655360 -GPIO_MODER_MODER3_1655360 -GPIO_MODER_MODER3_AF655360 -GPIO_MODER_MODER3_AI655360 -GPIO_MODER_MODER3_O655360 -GPIO_MODER_MODER4655360 -GPIO_MODER_MODER4_0655360 -GPIO_MODER_MODER4_1655360 -GPIO_MODER_MODER4_AF655360 -GPIO_MODER_MODER4_AI655360 -GPIO_MODER_MODER4_O655360 -GPIO_MODER_MODER5655360 -GPIO_MODER_MODER5_0655360 -GPIO_MODER_MODER5_1655360 -GPIO_MODER_MODER5_AF655360 -GPIO_MODER_MODER5_AI655360 -GPIO_MODER_MODER5_O655360 -GPIO_MODER_MODER6655360 -GPIO_MODER_MODER6_0655360 -GPIO_MODER_MODER6_1655360 -GPIO_MODER_MODER6_AF655360 -GPIO_MODER_MODER6_AI655360 -GPIO_MODER_MODER6_O655360 -GPIO_MODER_MODER7655360 -GPIO_MODER_MODER7_0655360 -GPIO_MODER_MODER7_1655360 -GPIO_MODER_MODER7_AF655360 -GPIO_MODER_MODER7_AI655360 -GPIO_MODER_MODER7_O655360 -GPIO_MODER_MODER8655360 -GPIO_MODER_MODER8_0655360 -GPIO_MODER_MODER8_1655360 -GPIO_MODER_MODER8_AF655360 -GPIO_MODER_MODER8_AI655360 -GPIO_MODER_MODER8_O655360 -GPIO_MODER_MODER9655360 -GPIO_MODER_MODER9_0655360 -GPIO_MODER_MODER9_1655360 -GPIO_MODER_MODER9_AF655360 -GPIO_MODER_MODER9_AI655360 -GPIO_MODER_MODER9_O655360 -GPIO_ODR_0655360 -GPIO_ODR_1655360 -GPIO_ODR_10655360 -GPIO_ODR_11655360 -GPIO_ODR_12655360 -GPIO_ODR_13655360 -GPIO_ODR_14655360 -GPIO_ODR_15655360 -GPIO_ODR_2655360 -GPIO_ODR_3655360 -GPIO_ODR_4655360 -GPIO_ODR_5655360 -GPIO_ODR_6655360 -GPIO_ODR_7655360 -GPIO_ODR_8655360 -GPIO_ODR_9655360 -GPIO_OSPEEDER_OSPEEDR0655360 -GPIO_OSPEEDER_OSPEEDR0_0655360 -GPIO_OSPEEDER_OSPEEDR0_1655360 -GPIO_OSPEEDER_OSPEEDR1655360 -GPIO_OSPEEDER_OSPEEDR10655360 -GPIO_OSPEEDER_OSPEEDR10_0655360 -GPIO_OSPEEDER_OSPEEDR10_1655360 -GPIO_OSPEEDER_OSPEEDR11655360 -GPIO_OSPEEDER_OSPEEDR11_0655360 -GPIO_OSPEEDER_OSPEEDR11_1655360 -GPIO_OSPEEDER_OSPEEDR12655360 -GPIO_OSPEEDER_OSPEEDR12_0655360 -GPIO_OSPEEDER_OSPEEDR12_1655360 -GPIO_OSPEEDER_OSPEEDR13655360 -GPIO_OSPEEDER_OSPEEDR13_0655360 -GPIO_OSPEEDER_OSPEEDR13_1655360 -GPIO_OSPEEDER_OSPEEDR14655360 -GPIO_OSPEEDER_OSPEEDR14_0655360 -GPIO_OSPEEDER_OSPEEDR14_1655360 -GPIO_OSPEEDER_OSPEEDR15655360 -GPIO_OSPEEDER_OSPEEDR15_0655360 -GPIO_OSPEEDER_OSPEEDR15_1655360 -GPIO_OSPEEDER_OSPEEDR1_0655360 -GPIO_OSPEEDER_OSPEEDR1_1655360 -GPIO_OSPEEDER_OSPEEDR2655360 -GPIO_OSPEEDER_OSPEEDR2_0655360 -GPIO_OSPEEDER_OSPEEDR2_1655360 -GPIO_OSPEEDER_OSPEEDR3655360 -GPIO_OSPEEDER_OSPEEDR3_0655360 -GPIO_OSPEEDER_OSPEEDR3_1655360 -GPIO_OSPEEDER_OSPEEDR4655360 -GPIO_OSPEEDER_OSPEEDR4_0655360 -GPIO_OSPEEDER_OSPEEDR4_1655360 -GPIO_OSPEEDER_OSPEEDR5655360 -GPIO_OSPEEDER_OSPEEDR5_0655360 -GPIO_OSPEEDER_OSPEEDR5_1655360 -GPIO_OSPEEDER_OSPEEDR6655360 -GPIO_OSPEEDER_OSPEEDR6_0655360 -GPIO_OSPEEDER_OSPEEDR6_1655360 -GPIO_OSPEEDER_OSPEEDR7655360 -GPIO_OSPEEDER_OSPEEDR7_0655360 -GPIO_OSPEEDER_OSPEEDR7_1655360 -GPIO_OSPEEDER_OSPEEDR8655360 -GPIO_OSPEEDER_OSPEEDR8_0655360 -GPIO_OSPEEDER_OSPEEDR8_1655360 -GPIO_OSPEEDER_OSPEEDR9655360 -GPIO_OSPEEDER_OSPEEDR9_0655360 -GPIO_OSPEEDER_OSPEEDR9_1655360 -GPIO_OSPEEDR_OSPEEDR0655360 -GPIO_OSPEEDR_OSPEEDR0_0655360 -GPIO_OSPEEDR_OSPEEDR0_1655360 -GPIO_OSPEEDR_OSPEEDR1655360 -GPIO_OSPEEDR_OSPEEDR10655360 -GPIO_OSPEEDR_OSPEEDR10_0655360 -GPIO_OSPEEDR_OSPEEDR10_1655360 -GPIO_OSPEEDR_OSPEEDR11655360 -GPIO_OSPEEDR_OSPEEDR11_0655360 -GPIO_OSPEEDR_OSPEEDR11_1655360 -GPIO_OSPEEDR_OSPEEDR12655360 -GPIO_OSPEEDR_OSPEEDR12_0655360 -GPIO_OSPEEDR_OSPEEDR12_1655360 -GPIO_OSPEEDR_OSPEEDR13655360 -GPIO_OSPEEDR_OSPEEDR13_0655360 -GPIO_OSPEEDR_OSPEEDR13_1655360 -GPIO_OSPEEDR_OSPEEDR14655360 -GPIO_OSPEEDR_OSPEEDR14_0655360 -GPIO_OSPEEDR_OSPEEDR14_1655360 -GPIO_OSPEEDR_OSPEEDR15655360 -GPIO_OSPEEDR_OSPEEDR15_0655360 -GPIO_OSPEEDR_OSPEEDR15_1655360 -GPIO_OSPEEDR_OSPEEDR1_0655360 -GPIO_OSPEEDR_OSPEEDR1_1655360 -GPIO_OSPEEDR_OSPEEDR2655360 -GPIO_OSPEEDR_OSPEEDR2_0655360 -GPIO_OSPEEDR_OSPEEDR2_1655360 -GPIO_OSPEEDR_OSPEEDR3655360 -GPIO_OSPEEDR_OSPEEDR3_0655360 -GPIO_OSPEEDR_OSPEEDR3_1655360 -GPIO_OSPEEDR_OSPEEDR4655360 -GPIO_OSPEEDR_OSPEEDR4_0655360 -GPIO_OSPEEDR_OSPEEDR4_1655360 -GPIO_OSPEEDR_OSPEEDR5655360 -GPIO_OSPEEDR_OSPEEDR5_0655360 -GPIO_OSPEEDR_OSPEEDR5_1655360 -GPIO_OSPEEDR_OSPEEDR6655360 -GPIO_OSPEEDR_OSPEEDR6_0655360 -GPIO_OSPEEDR_OSPEEDR6_1655360 -GPIO_OSPEEDR_OSPEEDR7655360 -GPIO_OSPEEDR_OSPEEDR7_0655360 -GPIO_OSPEEDR_OSPEEDR7_1655360 -GPIO_OSPEEDR_OSPEEDR8655360 -GPIO_OSPEEDR_OSPEEDR8_0655360 -GPIO_OSPEEDR_OSPEEDR8_1655360 -GPIO_OSPEEDR_OSPEEDR9655360 -GPIO_OSPEEDR_OSPEEDR9_0655360 -GPIO_OSPEEDR_OSPEEDR9_1655360 -GPIO_OTYPER_OT_0655360 -GPIO_OTYPER_OT_1655360 -GPIO_OTYPER_OT_10655360 -GPIO_OTYPER_OT_11655360 -GPIO_OTYPER_OT_12655360 -GPIO_OTYPER_OT_13655360 -GPIO_OTYPER_OT_14655360 -GPIO_OTYPER_OT_15655360 -GPIO_OTYPER_OT_2655360 -GPIO_OTYPER_OT_3655360 -GPIO_OTYPER_OT_4655360 -GPIO_OTYPER_OT_5655360 -GPIO_OTYPER_OT_6655360 -GPIO_OTYPER_OT_7655360 -GPIO_OTYPER_OT_8655360 -GPIO_OTYPER_OT_9655360 -GPIO_PUPDR_PUPDR0655360 -GPIO_PUPDR_PUPDR0_0655360 -GPIO_PUPDR_PUPDR0_1655360 -GPIO_PUPDR_PUPDR1655360 -GPIO_PUPDR_PUPDR10655360 -GPIO_PUPDR_PUPDR10_0655360 -GPIO_PUPDR_PUPDR10_1655360 -GPIO_PUPDR_PUPDR11655360 -GPIO_PUPDR_PUPDR11_0655360 -GPIO_PUPDR_PUPDR11_1655360 -GPIO_PUPDR_PUPDR12655360 -GPIO_PUPDR_PUPDR12_0655360 -GPIO_PUPDR_PUPDR12_1655360 -GPIO_PUPDR_PUPDR13655360 -GPIO_PUPDR_PUPDR13_0655360 -GPIO_PUPDR_PUPDR13_1655360 -GPIO_PUPDR_PUPDR14655360 -GPIO_PUPDR_PUPDR14_0655360 -GPIO_PUPDR_PUPDR14_1655360 -GPIO_PUPDR_PUPDR15655360 -GPIO_PUPDR_PUPDR15_0655360 -GPIO_PUPDR_PUPDR15_1655360 -GPIO_PUPDR_PUPDR1_0655360 -GPIO_PUPDR_PUPDR1_1655360 -GPIO_PUPDR_PUPDR2655360 -GPIO_PUPDR_PUPDR2_0655360 -GPIO_PUPDR_PUPDR2_1655360 -GPIO_PUPDR_PUPDR3655360 -GPIO_PUPDR_PUPDR3_0655360 -GPIO_PUPDR_PUPDR3_1655360 -GPIO_PUPDR_PUPDR4655360 -GPIO_PUPDR_PUPDR4_0655360 -GPIO_PUPDR_PUPDR4_1655360 -GPIO_PUPDR_PUPDR5655360 -GPIO_PUPDR_PUPDR5_0655360 -GPIO_PUPDR_PUPDR5_1655360 -GPIO_PUPDR_PUPDR6655360 -GPIO_PUPDR_PUPDR6_0655360 -GPIO_PUPDR_PUPDR6_1655360 -GPIO_PUPDR_PUPDR7655360 -GPIO_PUPDR_PUPDR7_0655360 -GPIO_PUPDR_PUPDR7_1655360 -GPIO_PUPDR_PUPDR8655360 -GPIO_PUPDR_PUPDR8_0655360 -GPIO_PUPDR_PUPDR8_1655360 -GPIO_PUPDR_PUPDR9655360 -GPIO_PUPDR_PUPDR9_0655360 -GPIO_PUPDR_PUPDR9_1655360 -I2C1655360 -I2C1_BASE655360 -I2C_CR1_ADDRIE655360 -I2C_CR1_ALERTEN655360 -I2C_CR1_ANFOFF655360 -I2C_CR1_DFN655360 -I2C_CR1_ERRIE655360 -I2C_CR1_GCEN655360 -I2C_CR1_NACKIE655360 -I2C_CR1_NOSTRETCH655360 -I2C_CR1_PE655360 -I2C_CR1_PECEN655360 -I2C_CR1_RXDMAEN655360 -I2C_CR1_RXIE655360 -I2C_CR1_SBC655360 -I2C_CR1_SMBDEN655360 -I2C_CR1_SMBHEN655360 -I2C_CR1_STOPIE655360 -I2C_CR1_SWRST655360 -I2C_CR1_TCIE655360 -I2C_CR1_TXDMAEN655360 -I2C_CR1_TXIE655360 -I2C_CR1_WUPEN655360 -I2C_CR2_ADD10655360 -I2C_CR2_AUTOEND655360 -I2C_CR2_HEAD10R655360 -I2C_CR2_NACK655360 -I2C_CR2_NBYTES655360 -I2C_CR2_PECBYTE655360 -I2C_CR2_RD_WRN655360 -I2C_CR2_RELOAD655360 -I2C_CR2_SADD655360 -I2C_CR2_START655360 -I2C_CR2_STOP655360 -I2C_ICR_ADDRCF655360 -I2C_ICR_ALERTCF655360 -I2C_ICR_ARLOCF655360 -I2C_ICR_BERRCF655360 -I2C_ICR_NACKCF655360 -I2C_ICR_OVRCF655360 -I2C_ICR_PECCF655360 -I2C_ICR_STOPCF655360 -I2C_ICR_TIMOUTCF655360 -I2C_ISR_ADDCODE655360 -I2C_ISR_ADDR655360 -I2C_ISR_ALERT655360 -I2C_ISR_ARLO655360 -I2C_ISR_BERR655360 -I2C_ISR_BUSY655360 -I2C_ISR_DIR655360 -I2C_ISR_NACKF655360 -I2C_ISR_OVR655360 -I2C_ISR_PECERR655360 -I2C_ISR_RXNE655360 -I2C_ISR_STOPF655360 -I2C_ISR_TC655360 -I2C_ISR_TCR655360 -I2C_ISR_TIMEOUT655360 -I2C_ISR_TXE655360 -I2C_ISR_TXIS655360 -I2C_OAR1_OA1655360 -I2C_OAR1_OA1EN655360 -I2C_OAR1_OA1MODE655360 -I2C_OAR2_OA2655360 -I2C_OAR2_OA2EN655360 -I2C_OAR2_OA2MSK655360 -I2C_PECR_PEC655360 -I2C_RXDR_RXDATA655360 -I2C_TIMEOUTR_TEXTEN655360 -I2C_TIMEOUTR_TIDLE655360 -I2C_TIMEOUTR_TIMEOUTA655360 -I2C_TIMEOUTR_TIMEOUTB655360 -I2C_TIMEOUTR_TIMOUTEN655360 -I2C_TIMINGR_PRESC655360 -I2C_TIMINGR_SCLDEL655360 -I2C_TIMINGR_SCLH655360 -I2C_TIMINGR_SCLL655360 -I2C_TIMINGR_SDADEL655360 -I2C_TXDR_TXDATA655360 -INT16_C131072(c)0 -INT16_MAX655360 -INT16_MIN655360 -INT16_WIDTH655360 -INT32_C131072(c)0 -INT32_MAX655360 -INT32_MIN655360 -INT32_WIDTH655360 -INT64_C131072(c)0 -INT64_MAX655360 -INT64_MIN655360 -INT64_WIDTH655360 -INT8_C131072(c)0 -INT8_MAX655360 -INT8_MIN655360 -INT8_WIDTH655360 -INTMAX_C131072(c)0 -INTMAX_MAX655360 -INTMAX_MIN655360 -INTMAX_WIDTH655360 -INTPTR_MAX655360 -INTPTR_MIN655360 -INTPTR_WIDTH655360 -INT_FAST16_MAX655360 -INT_FAST16_MIN655360 -INT_FAST16_WIDTH655360 -INT_FAST32_MAX655360 -INT_FAST32_MIN655360 -INT_FAST32_WIDTH655360 -INT_FAST64_MAX655360 -INT_FAST64_MIN655360 -INT_FAST64_WIDTH655360 -INT_FAST8_MAX655360 -INT_FAST8_MIN655360 -INT_FAST8_WIDTH655360 -INT_LEAST16_MAX655360 -INT_LEAST16_MIN655360 -INT_LEAST16_WIDTH655360 -INT_LEAST32_MAX655360 -INT_LEAST32_MIN655360 -INT_LEAST32_WIDTH655360 -INT_LEAST64_MAX655360 -INT_LEAST64_MIN655360 -INT_LEAST64_WIDTH655360 -INT_LEAST8_MAX655360 -INT_LEAST8_MIN655360 -INT_LEAST8_WIDTH655360 -ISTR64anon_struct_00volatile uint32_t -IS_ADC_ALL_INSTANCE131072(INSTANCE)0 -IS_ADC_COMMON_INSTANCE131072(INSTANCE)0 -IS_CAN_ALL_INSTANCE131072(INSTANCE)0 -IS_CEC_ALL_INSTANCE131072(INSTANCE)0 -IS_CRC_ALL_INSTANCE131072(INSTANCE)0 -IS_DMA_ALL_INSTANCE131072(INSTANCE)0 -IS_FUNCTIONAL_STATE131072(STATE)0 -IS_GPIO_AF_INSTANCE131072(INSTANCE)0 -IS_GPIO_ALL_INSTANCE131072(INSTANCE)0 -IS_GPIO_LOCK_INSTANCE131072(INSTANCE)0 -IS_I2C_ALL_INSTANCE131072(INSTANCE)0 -IS_I2S_ALL_INSTANCE131072(INSTANCE)0 -IS_IRDA_INSTANCE131072(INSTANCE)0 -IS_IWDG_ALL_INSTANCE131072(INSTANCE)0 -IS_RTC_ALL_INSTANCE131072(INSTANCE)0 -IS_SMARTCARD_INSTANCE131072(INSTANCE)0 -IS_SMBUS_ALL_INSTANCE131072(INSTANCE)0 -IS_SPI_ALL_INSTANCE131072(INSTANCE)0 -IS_TIM_32B_COUNTER_INSTANCE131072(INSTANCE)0 -IS_TIM_BKIN2_INSTANCE131072(INSTANCE)0 -IS_TIM_BREAK_INSTANCE131072(INSTANCE)0 -IS_TIM_CC1_INSTANCE131072(INSTANCE)0 -IS_TIM_CC2_INSTANCE131072(INSTANCE)0 -IS_TIM_CC3_INSTANCE131072(INSTANCE)0 -IS_TIM_CC4_INSTANCE131072(INSTANCE)0 -IS_TIM_CC5_INSTANCE131072(INSTANCE)0 -IS_TIM_CC6_INSTANCE131072(INSTANCE)0 -IS_TIM_CCXN_INSTANCE131072(INSTANCE,CHANNEL)0 -IS_TIM_CCX_INSTANCE131072(INSTANCE,CHANNEL)0 -IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE131072(INSTANCE)0 -IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE131072(INSTANCE)0 -IS_TIM_CLOCKSOURCE_ITRX_INSTANCE131072(INSTANCE)0 -IS_TIM_CLOCKSOURCE_TIX_INSTANCE131072(INSTANCE)0 -IS_TIM_CLOCK_DIVISION_INSTANCE131072(INSTANCE)0 -IS_TIM_CLOCK_SELECT_INSTANCE131072(INSTANCE)0 -IS_TIM_COMMUTATION_EVENT_INSTANCE131072(INSTANCE)0 -IS_TIM_COUNTER_MODE_SELECT_INSTANCE131072(INSTANCE)0 -IS_TIM_DMABURST_INSTANCE131072(INSTANCE)0 -IS_TIM_DMA_CC_INSTANCE131072(INSTANCE)0 -IS_TIM_DMA_INSTANCE131072(INSTANCE)0 -IS_TIM_ENCODER_INTERFACE_INSTANCE131072(INSTANCE)0 -IS_TIM_HALL_INTERFACE_INSTANCE131072(INSTANCE)0 -IS_TIM_INSTANCE131072(INSTANCE)0 -IS_TIM_MASTER_INSTANCE131072(INSTANCE)0 -IS_TIM_OCXREF_CLEAR_INSTANCE131072(INSTANCE)0 -IS_TIM_REMAP_INSTANCE131072(INSTANCE)0 -IS_TIM_REPETITION_COUNTER_INSTANCE131072(INSTANCE)0 -IS_TIM_SLAVE_INSTANCE131072(INSTANCE)0 -IS_TIM_SYNCHRO_INSTANCE131072(INSTANCE)0 -IS_TIM_TRGO2_INSTANCE131072(INSTANCE)0 -IS_TIM_XOR_INSTANCE131072(INSTANCE)0 -IS_TSC_ALL_INSTANCE131072(INSTANCE)0 -IS_UART_AUTOBAUDRATE_DETECTION_INSTANCE131072(INSTANCE)0 -IS_UART_DRIVER_ENABLE_INSTANCE131072(INSTANCE)0 -IS_UART_HALFDUPLEX_INSTANCE131072(INSTANCE)0 -IS_UART_HWFLOW_INSTANCE131072(INSTANCE)0 -IS_UART_INSTANCE131072(INSTANCE)0 -IS_UART_LIN_INSTANCE131072(INSTANCE)0 -IS_UART_WAKEUP_INSTANCE131072(INSTANCE)0 -IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE131072(INSTANCE)0 -IS_USART_INSTANCE131072(INSTANCE)0 -IS_USB_ALL_INSTANCE131072(INSTANCE)0 -IS_WWDG_ALL_INSTANCE131072(INSTANCE)0 -IWDG655360 -IWDG_BASE655360 -IWDG_KR_KEY655360 -IWDG_PR_PR655360 -IWDG_PR_PR_0655360 -IWDG_PR_PR_1655360 -IWDG_PR_PR_2655360 -IWDG_REFRESH655360 -IWDG_RLR_RL655360 -IWDG_SR_PVU655360 -IWDG_SR_RVU655360 -IWDG_SR_WVU655360 -IWDG_START655360 -IWDG_WINR_WIN655360 -IWDG_WRITE_ACCESS655360 -KEEP_DTOG_RX131072(R)0 -KEEP_DTOG_TX131072(R)0 -KEEP_STAT_RX131072(R)0 -KEEP_STAT_TX131072(R)0 -LED0_pin655360 -LED0_port655360 -LED1_pin655360 -LED1_port655360 -LED_blink131072(x)0 -LED_off131072(x)0 -LED_on131072(x)0 -LPMCSR64anon_struct_00volatile uint32_t -MAX_ENDPOINTS655360 -MODIFY_REG131072(REG,CLEARMASK,SETMASK)0 -MSG131072(str)0 -NULL655360 -NVIC655360 -NVIC_BASE655360 -OB655360 -OB_BASE655360 -OB_RDP_RDP655360 -OB_RDP_nRDP655360 -OB_USER_USER655360 -OB_USER_nUSER655360 -OB_WRP0_WRP0655360 -OB_WRP0_nWRP0655360 -OB_WRP1_WRP1655360 -OB_WRP1_nWRP1655360 -OB_WRP2_WRP2655360 -OB_WRP2_nWRP2655360 -OB_WRP3_WRP3655360 -OB_WRP3_nWRP3655360 -PERIPH_BASE655360 -PTRDIFF_MAX655360 -PTRDIFF_MIN655360 -PTRDIFF_WIDTH655360 -PVD_IRQHandler655360 -PVD_IRQn655360 -PWR655360 -PWR_BASE655360 -PWR_CR_CSBF655360 -PWR_CR_CWUF655360 -PWR_CR_DBP655360 -PWR_CR_LPDS655360 -PWR_CR_PDDS655360 -PWR_CR_PLS655360 -PWR_CR_PLS_0655360 -PWR_CR_PLS_1655360 -PWR_CR_PLS_2655360 -PWR_CR_PLS_LEV0655360 -PWR_CR_PLS_LEV1655360 -PWR_CR_PLS_LEV2655360 -PWR_CR_PLS_LEV3655360 -PWR_CR_PLS_LEV4655360 -PWR_CR_PLS_LEV5655360 -PWR_CR_PLS_LEV6655360 -PWR_CR_PLS_LEV7655360 -PWR_CR_PVDE655360 -PWR_CSR_EWUP1655360 -PWR_CSR_EWUP2655360 -PWR_CSR_EWUP3655360 -PWR_CSR_EWUP4655360 -PWR_CSR_EWUP5655360 -PWR_CSR_EWUP6655360 -PWR_CSR_EWUP7655360 -PWR_CSR_EWUP8655360 -PWR_CSR_PVDO655360 -PWR_CSR_SBF655360 -PWR_CSR_VREFINTRDYF655360 -PWR_CSR_WUF655360 -RCC655360 -RCC_AHBENR_CRCEN655360 -RCC_AHBENR_DMA1EN655360 -RCC_AHBENR_DMAEN655360 -RCC_AHBENR_FLITFEN655360 -RCC_AHBENR_GPIOAEN655360 -RCC_AHBENR_GPIOBEN655360 -RCC_AHBENR_GPIOCEN655360 -RCC_AHBENR_GPIOFEN655360 -RCC_AHBENR_SRAMEN655360 -RCC_AHBENR_TSCEN655360 -RCC_AHBENR_TSEN655360 -RCC_AHBRSTR_GPIOARST655360 -RCC_AHBRSTR_GPIOBRST655360 -RCC_AHBRSTR_GPIOCRST655360 -RCC_AHBRSTR_GPIOFRST655360 -RCC_AHBRSTR_TSCRST655360 -RCC_AHBRSTR_TSRST655360 -RCC_APB1ENR_CANEN655360 -RCC_APB1ENR_CECEN655360 -RCC_APB1ENR_CRSEN655360 -RCC_APB1ENR_DACEN655360 -RCC_APB1ENR_I2C1EN655360 -RCC_APB1ENR_I2C2EN655360 -RCC_APB1ENR_PWREN655360 -RCC_APB1ENR_SPI2EN655360 -RCC_APB1ENR_TIM14EN655360 -RCC_APB1ENR_TIM2EN655360 -RCC_APB1ENR_TIM3EN655360 -RCC_APB1ENR_USART2EN655360 -RCC_APB1ENR_USART3EN655360 -RCC_APB1ENR_USART4EN655360 -RCC_APB1ENR_USBEN655360 -RCC_APB1ENR_WWDGEN655360 -RCC_APB1RSTR_CANRST655360 -RCC_APB1RSTR_CECRST655360 -RCC_APB1RSTR_CRSRST655360 -RCC_APB1RSTR_DACRST655360 -RCC_APB1RSTR_I2C1RST655360 -RCC_APB1RSTR_I2C2RST655360 -RCC_APB1RSTR_PWRRST655360 -RCC_APB1RSTR_SPI2RST655360 -RCC_APB1RSTR_TIM14RST655360 -RCC_APB1RSTR_TIM2RST655360 -RCC_APB1RSTR_TIM3RST655360 -RCC_APB1RSTR_USART2RST655360 -RCC_APB1RSTR_USART3RST655360 -RCC_APB1RSTR_USART4RST655360 -RCC_APB1RSTR_USBRST655360 -RCC_APB1RSTR_WWDGRST655360 -RCC_APB2ENR_ADC1EN655360 -RCC_APB2ENR_ADCEN655360 -RCC_APB2ENR_DBGMCUEN655360 -RCC_APB2ENR_SPI1EN655360 -RCC_APB2ENR_SYSCFGCOMPEN655360 -RCC_APB2ENR_SYSCFGEN655360 -RCC_APB2ENR_TIM16EN655360 -RCC_APB2ENR_TIM17EN655360 -RCC_APB2ENR_TIM1EN655360 -RCC_APB2ENR_USART1EN655360 -RCC_APB2RSTR_ADC1RST655360 -RCC_APB2RSTR_ADCRST655360 -RCC_APB2RSTR_DBGMCURST655360 -RCC_APB2RSTR_SPI1RST655360 -RCC_APB2RSTR_SYSCFGRST655360 -RCC_APB2RSTR_TIM16RST655360 -RCC_APB2RSTR_TIM17RST655360 -RCC_APB2RSTR_TIM1RST655360 -RCC_APB2RSTR_USART1RST655360 -RCC_BASE655360 -RCC_BDCR_BDRST655360 -RCC_BDCR_LSEBYP655360 -RCC_BDCR_LSEDRV655360 -RCC_BDCR_LSEDRV_0655360 -RCC_BDCR_LSEDRV_1655360 -RCC_BDCR_LSEON655360 -RCC_BDCR_LSERDY655360 -RCC_BDCR_RTCEN655360 -RCC_BDCR_RTCSEL655360 -RCC_BDCR_RTCSEL_0655360 -RCC_BDCR_RTCSEL_1655360 -RCC_BDCR_RTCSEL_HSE655360 -RCC_BDCR_RTCSEL_LSE655360 -RCC_BDCR_RTCSEL_LSI655360 -RCC_BDCR_RTCSEL_NOCLOCK655360 -RCC_CFGR2_PREDIV655360 -RCC_CFGR2_PREDIV_0655360 -RCC_CFGR2_PREDIV_1655360 -RCC_CFGR2_PREDIV_2655360 -RCC_CFGR2_PREDIV_3655360 -RCC_CFGR2_PREDIV_DIV1655360 -RCC_CFGR2_PREDIV_DIV10655360 -RCC_CFGR2_PREDIV_DIV11655360 -RCC_CFGR2_PREDIV_DIV12655360 -RCC_CFGR2_PREDIV_DIV13655360 -RCC_CFGR2_PREDIV_DIV14655360 -RCC_CFGR2_PREDIV_DIV15655360 -RCC_CFGR2_PREDIV_DIV16655360 -RCC_CFGR2_PREDIV_DIV2655360 -RCC_CFGR2_PREDIV_DIV3655360 -RCC_CFGR2_PREDIV_DIV4655360 -RCC_CFGR2_PREDIV_DIV5655360 -RCC_CFGR2_PREDIV_DIV6655360 -RCC_CFGR2_PREDIV_DIV7655360 -RCC_CFGR2_PREDIV_DIV8655360 -RCC_CFGR2_PREDIV_DIV9655360 -RCC_CFGR3_CECSW655360 -RCC_CFGR3_CECSW_HSI_DIV244655360 -RCC_CFGR3_CECSW_LSE655360 -RCC_CFGR3_I2C1SW655360 -RCC_CFGR3_I2C1SW_HSI655360 -RCC_CFGR3_I2C1SW_SYSCLK655360 -RCC_CFGR3_USART1SW655360 -RCC_CFGR3_USART1SW_0655360 -RCC_CFGR3_USART1SW_1655360 -RCC_CFGR3_USART1SW_HSI655360 -RCC_CFGR3_USART1SW_LSE655360 -RCC_CFGR3_USART1SW_PCLK655360 -RCC_CFGR3_USART1SW_SYSCLK655360 -RCC_CFGR3_USART2SW655360 -RCC_CFGR3_USART2SW_0655360 -RCC_CFGR3_USART2SW_1655360 -RCC_CFGR3_USART2SW_HSI655360 -RCC_CFGR3_USART2SW_LSE655360 -RCC_CFGR3_USART2SW_PCLK655360 -RCC_CFGR3_USART2SW_SYSCLK655360 -RCC_CFGR3_USBSW655360 -RCC_CFGR3_USBSW_HSI48655360 -RCC_CFGR3_USBSW_PLLCLK655360 -RCC_CFGR_ADCPRE655360 -RCC_CFGR_ADCPRE_DIV2655360 -RCC_CFGR_ADCPRE_DIV4655360 -RCC_CFGR_HPRE655360 -RCC_CFGR_HPRE_0655360 -RCC_CFGR_HPRE_1655360 -RCC_CFGR_HPRE_2655360 -RCC_CFGR_HPRE_3655360 -RCC_CFGR_HPRE_DIV1655360 -RCC_CFGR_HPRE_DIV128655360 -RCC_CFGR_HPRE_DIV16655360 -RCC_CFGR_HPRE_DIV2655360 -RCC_CFGR_HPRE_DIV256655360 -RCC_CFGR_HPRE_DIV4655360 -RCC_CFGR_HPRE_DIV512655360 -RCC_CFGR_HPRE_DIV64655360 -RCC_CFGR_HPRE_DIV8655360 -RCC_CFGR_MCO655360 -RCC_CFGR_MCOPRE655360 -RCC_CFGR_MCOPRE_DIV1655360 -RCC_CFGR_MCOPRE_DIV128655360 -RCC_CFGR_MCOPRE_DIV16655360 -RCC_CFGR_MCOPRE_DIV2655360 -RCC_CFGR_MCOPRE_DIV32655360 -RCC_CFGR_MCOPRE_DIV4655360 -RCC_CFGR_MCOPRE_DIV64655360 -RCC_CFGR_MCOPRE_DIV8655360 -RCC_CFGR_MCO_0655360 -RCC_CFGR_MCO_1655360 -RCC_CFGR_MCO_2655360 -RCC_CFGR_MCO_3655360 -RCC_CFGR_MCO_HSE655360 -RCC_CFGR_MCO_HSI655360 -RCC_CFGR_MCO_HSI14655360 -RCC_CFGR_MCO_HSI48655360 -RCC_CFGR_MCO_LSE655360 -RCC_CFGR_MCO_LSI655360 -RCC_CFGR_MCO_NOCLOCK655360 -RCC_CFGR_MCO_PLL655360 -RCC_CFGR_MCO_SYSCLK655360 -RCC_CFGR_PLLMUL655360 -RCC_CFGR_PLLMUL10655360 -RCC_CFGR_PLLMUL11655360 -RCC_CFGR_PLLMUL12655360 -RCC_CFGR_PLLMUL13655360 -RCC_CFGR_PLLMUL14655360 -RCC_CFGR_PLLMUL15655360 -RCC_CFGR_PLLMUL16655360 -RCC_CFGR_PLLMUL2655360 -RCC_CFGR_PLLMUL3655360 -RCC_CFGR_PLLMUL4655360 -RCC_CFGR_PLLMUL5655360 -RCC_CFGR_PLLMUL6655360 -RCC_CFGR_PLLMUL7655360 -RCC_CFGR_PLLMUL8655360 -RCC_CFGR_PLLMUL9655360 -RCC_CFGR_PLLMUL_0655360 -RCC_CFGR_PLLMUL_1655360 -RCC_CFGR_PLLMUL_2655360 -RCC_CFGR_PLLMUL_3655360 -RCC_CFGR_PLLNODIV655360 -RCC_CFGR_PLLSRC655360 -RCC_CFGR_PLLSRC_HSE_PREDIV655360 -RCC_CFGR_PLLSRC_HSI48_PREDIV655360 -RCC_CFGR_PLLSRC_HSI_DIV2655360 -RCC_CFGR_PLLSRC_HSI_PREDIV655360 -RCC_CFGR_PLLXTPRE655360 -RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV1655360 -RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV2655360 -RCC_CFGR_PPRE655360 -RCC_CFGR_PPRE_0655360 -RCC_CFGR_PPRE_1655360 -RCC_CFGR_PPRE_2655360 -RCC_CFGR_PPRE_DIV1655360 -RCC_CFGR_PPRE_DIV16655360 -RCC_CFGR_PPRE_DIV2655360 -RCC_CFGR_PPRE_DIV4655360 -RCC_CFGR_PPRE_DIV8655360 -RCC_CFGR_SW655360 -RCC_CFGR_SWS655360 -RCC_CFGR_SWS_0655360 -RCC_CFGR_SWS_1655360 -RCC_CFGR_SWS_HSE655360 -RCC_CFGR_SWS_HSI655360 -RCC_CFGR_SWS_HSI48655360 -RCC_CFGR_SWS_PLL655360 -RCC_CFGR_SW_0655360 -RCC_CFGR_SW_1655360 -RCC_CFGR_SW_HSE655360 -RCC_CFGR_SW_HSI655360 -RCC_CFGR_SW_HSI48655360 -RCC_CFGR_SW_PLL655360 -RCC_CFGR_USBPRE655360 -RCC_CIR_CSSC655360 -RCC_CIR_CSSF655360 -RCC_CIR_HSERDYC655360 -RCC_CIR_HSERDYF655360 -RCC_CIR_HSERDYIE655360 -RCC_CIR_HSI14RDYC655360 -RCC_CIR_HSI14RDYF655360 -RCC_CIR_HSI14RDYIE655360 -RCC_CIR_HSI48RDYC655360 -RCC_CIR_HSI48RDYF655360 -RCC_CIR_HSI48RDYIE655360 -RCC_CIR_HSIRDYC655360 -RCC_CIR_HSIRDYF655360 -RCC_CIR_HSIRDYIE655360 -RCC_CIR_LSERDYC655360 -RCC_CIR_LSERDYF655360 -RCC_CIR_LSERDYIE655360 -RCC_CIR_LSIRDYC655360 -RCC_CIR_LSIRDYF655360 -RCC_CIR_LSIRDYIE655360 -RCC_CIR_PLLRDYC655360 -RCC_CIR_PLLRDYF655360 -RCC_CIR_PLLRDYIE655360 -RCC_CR2_HSI14CAL655360 -RCC_CR2_HSI14DIS655360 -RCC_CR2_HSI14ON655360 -RCC_CR2_HSI14RDY655360 -RCC_CR2_HSI14TRIM655360 -RCC_CR2_HSI48CAL655360 -RCC_CR2_HSI48ON655360 -RCC_CR2_HSI48RDY655360 -RCC_CR_CSSON655360 -RCC_CR_HSEBYP655360 -RCC_CR_HSEON655360 -RCC_CR_HSERDY655360 -RCC_CR_HSICAL655360 -RCC_CR_HSICAL_0655360 -RCC_CR_HSICAL_1655360 -RCC_CR_HSICAL_2655360 -RCC_CR_HSICAL_3655360 -RCC_CR_HSICAL_4655360 -RCC_CR_HSICAL_5655360 -RCC_CR_HSICAL_6655360 -RCC_CR_HSICAL_7655360 -RCC_CR_HSION655360 -RCC_CR_HSIRDY655360 -RCC_CR_HSITRIM655360 -RCC_CR_HSITRIM_0655360 -RCC_CR_HSITRIM_1655360 -RCC_CR_HSITRIM_2655360 -RCC_CR_HSITRIM_3655360 -RCC_CR_HSITRIM_4655360 -RCC_CR_PLLON655360 -RCC_CR_PLLRDY655360 -RCC_CSR_IWDGRSTF655360 -RCC_CSR_LPWRRSTF655360 -RCC_CSR_LSION655360 -RCC_CSR_LSIRDY655360 -RCC_CSR_OBL655360 -RCC_CSR_OBLRSTF655360 -RCC_CSR_PINRSTF655360 -RCC_CSR_PORRSTF655360 -RCC_CSR_RMVF655360 -RCC_CSR_SFTRSTF655360 -RCC_CSR_V18PWRRSTF655360 -RCC_CSR_WWDGRSTF655360 -RCC_IRQHandler655360 -RCC_IRQn655360 -READ_BIT131072(REG,BIT)0 -READ_CAN_INV_ADDR131072()0 -READ_REG131072(REG)0 -RESERVED164anon_struct_00volatile uint32_t -RESERVED264anon_struct_00volatile uint32_t -RESERVED364anon_struct_00volatile uint32_t -RESERVED464anon_struct_00volatile uint32_t -RESERVED564anon_struct_00volatile uint32_t -RESERVED664anon_struct_00volatile uint32_t -RESERVED764anon_struct_00volatile uint32_t -RESERVED864anon_struct_00volatile uint32_t -RTC655360 -RTC_ALRMAR_DT655360 -RTC_ALRMAR_DT_0655360 -RTC_ALRMAR_DT_1655360 -RTC_ALRMAR_DU655360 -RTC_ALRMAR_DU_0655360 -RTC_ALRMAR_DU_1655360 -RTC_ALRMAR_DU_2655360 -RTC_ALRMAR_DU_3655360 -RTC_ALRMAR_HT655360 -RTC_ALRMAR_HT_0655360 -RTC_ALRMAR_HT_1655360 -RTC_ALRMAR_HU655360 -RTC_ALRMAR_HU_0655360 -RTC_ALRMAR_HU_1655360 -RTC_ALRMAR_HU_2655360 -RTC_ALRMAR_HU_3655360 -RTC_ALRMAR_MNT655360 -RTC_ALRMAR_MNT_0655360 -RTC_ALRMAR_MNT_1655360 -RTC_ALRMAR_MNT_2655360 -RTC_ALRMAR_MNU655360 -RTC_ALRMAR_MNU_0655360 -RTC_ALRMAR_MNU_1655360 -RTC_ALRMAR_MNU_2655360 -RTC_ALRMAR_MNU_3655360 -RTC_ALRMAR_MSK1655360 -RTC_ALRMAR_MSK2655360 -RTC_ALRMAR_MSK3655360 -RTC_ALRMAR_MSK4655360 -RTC_ALRMAR_PM655360 -RTC_ALRMAR_ST655360 -RTC_ALRMAR_ST_0655360 -RTC_ALRMAR_ST_1655360 -RTC_ALRMAR_ST_2655360 -RTC_ALRMAR_SU655360 -RTC_ALRMAR_SU_0655360 -RTC_ALRMAR_SU_1655360 -RTC_ALRMAR_SU_2655360 -RTC_ALRMAR_SU_3655360 -RTC_ALRMAR_WDSEL655360 -RTC_ALRMASSR_MASKSS655360 -RTC_ALRMASSR_MASKSS_0655360 -RTC_ALRMASSR_MASKSS_1655360 -RTC_ALRMASSR_MASKSS_2655360 -RTC_ALRMASSR_MASKSS_3655360 -RTC_ALRMASSR_SS655360 -RTC_BASE655360 -RTC_BKP0R655360 -RTC_BKP1R655360 -RTC_BKP2R655360 -RTC_BKP3R655360 -RTC_BKP4R655360 -RTC_BKP_NUMBER655360 -RTC_CALR_CALM655360 -RTC_CALR_CALM_0655360 -RTC_CALR_CALM_1655360 -RTC_CALR_CALM_2655360 -RTC_CALR_CALM_3655360 -RTC_CALR_CALM_4655360 -RTC_CALR_CALM_5655360 -RTC_CALR_CALM_6655360 -RTC_CALR_CALM_7655360 -RTC_CALR_CALM_8655360 -RTC_CALR_CALP655360 -RTC_CALR_CALW16655360 -RTC_CALR_CALW8655360 -RTC_CR_ADD1H655360 -RTC_CR_ALRAE655360 -RTC_CR_ALRAIE655360 -RTC_CR_BCK655360 -RTC_CR_BYPSHAD655360 -RTC_CR_COE655360 -RTC_CR_COSEL655360 -RTC_CR_FMT655360 -RTC_CR_OSEL655360 -RTC_CR_OSEL_0655360 -RTC_CR_OSEL_1655360 -RTC_CR_POL655360 -RTC_CR_REFCKON655360 -RTC_CR_SUB1H655360 -RTC_CR_TSE655360 -RTC_CR_TSEDGE655360 -RTC_CR_TSIE655360 -RTC_DR_DT655360 -RTC_DR_DT_0655360 -RTC_DR_DT_1655360 -RTC_DR_DU655360 -RTC_DR_DU_0655360 -RTC_DR_DU_1655360 -RTC_DR_DU_2655360 -RTC_DR_DU_3655360 -RTC_DR_MT655360 -RTC_DR_MU655360 -RTC_DR_MU_0655360 -RTC_DR_MU_1655360 -RTC_DR_MU_2655360 -RTC_DR_MU_3655360 -RTC_DR_WDU655360 -RTC_DR_WDU_0655360 -RTC_DR_WDU_1655360 -RTC_DR_WDU_2655360 -RTC_DR_YT655360 -RTC_DR_YT_0655360 -RTC_DR_YT_1655360 -RTC_DR_YT_2655360 -RTC_DR_YT_3655360 -RTC_DR_YU655360 -RTC_DR_YU_0655360 -RTC_DR_YU_1655360 -RTC_DR_YU_2655360 -RTC_DR_YU_3655360 -RTC_ISR_ALRAF655360 -RTC_ISR_ALRAWF655360 -RTC_ISR_INIT655360 -RTC_ISR_INITF655360 -RTC_ISR_INITS655360 -RTC_ISR_RECALPF655360 -RTC_ISR_RSF655360 -RTC_ISR_SHPF655360 -RTC_ISR_TAMP1F655360 -RTC_ISR_TAMP2F655360 -RTC_ISR_TSF655360 -RTC_ISR_TSOVF655360 -RTC_PRER_PREDIV_A655360 -RTC_PRER_PREDIV_S655360 -RTC_SHIFTR_ADD1S655360 -RTC_SHIFTR_SUBFS655360 -RTC_SSR_SS655360 -RTC_TAFCR_ALARMOUTTYPE655360 -RTC_TAFCR_TAMP1E655360 -RTC_TAFCR_TAMP1TRG655360 -RTC_TAFCR_TAMP2E655360 -RTC_TAFCR_TAMP2TRG655360 -RTC_TAFCR_TAMPFLT655360 -RTC_TAFCR_TAMPFLT_0655360 -RTC_TAFCR_TAMPFLT_1655360 -RTC_TAFCR_TAMPFREQ655360 -RTC_TAFCR_TAMPFREQ_0655360 -RTC_TAFCR_TAMPFREQ_1655360 -RTC_TAFCR_TAMPFREQ_2655360 -RTC_TAFCR_TAMPIE655360 -RTC_TAFCR_TAMPPRCH655360 -RTC_TAFCR_TAMPPRCH_0655360 -RTC_TAFCR_TAMPPRCH_1655360 -RTC_TAFCR_TAMPPUDIS655360 -RTC_TAFCR_TAMPTS655360 -RTC_TR_HT655360 -RTC_TR_HT_0655360 -RTC_TR_HT_1655360 -RTC_TR_HU655360 -RTC_TR_HU_0655360 -RTC_TR_HU_1655360 -RTC_TR_HU_2655360 -RTC_TR_HU_3655360 -RTC_TR_MNT655360 -RTC_TR_MNT_0655360 -RTC_TR_MNT_1655360 -RTC_TR_MNT_2655360 -RTC_TR_MNU655360 -RTC_TR_MNU_0655360 -RTC_TR_MNU_1655360 -RTC_TR_MNU_2655360 -RTC_TR_MNU_3655360 -RTC_TR_PM655360 -RTC_TR_ST655360 -RTC_TR_ST_0655360 -RTC_TR_ST_1655360 -RTC_TR_ST_2655360 -RTC_TR_SU655360 -RTC_TR_SU_0655360 -RTC_TR_SU_1655360 -RTC_TR_SU_2655360 -RTC_TR_SU_3655360 -RTC_TSDR_DT655360 -RTC_TSDR_DT_0655360 -RTC_TSDR_DT_1655360 -RTC_TSDR_DU655360 -RTC_TSDR_DU_0655360 -RTC_TSDR_DU_1655360 -RTC_TSDR_DU_2655360 -RTC_TSDR_DU_3655360 -RTC_TSDR_MT655360 -RTC_TSDR_MU655360 -RTC_TSDR_MU_0655360 -RTC_TSDR_MU_1655360 -RTC_TSDR_MU_2655360 -RTC_TSDR_MU_3655360 -RTC_TSDR_WDU655360 -RTC_TSDR_WDU_0655360 -RTC_TSDR_WDU_1655360 -RTC_TSDR_WDU_2655360 -RTC_TSSSR_SS655360 -RTC_TSTR_HT655360 -RTC_TSTR_HT_0655360 -RTC_TSTR_HT_1655360 -RTC_TSTR_HU655360 -RTC_TSTR_HU_0655360 -RTC_TSTR_HU_1655360 -RTC_TSTR_HU_2655360 -RTC_TSTR_HU_3655360 -RTC_TSTR_MNT655360 -RTC_TSTR_MNT_0655360 -RTC_TSTR_MNT_1655360 -RTC_TSTR_MNT_2655360 -RTC_TSTR_MNU655360 -RTC_TSTR_MNU_0655360 -RTC_TSTR_MNU_1655360 -RTC_TSTR_MNU_2655360 -RTC_TSTR_MNU_3655360 -RTC_TSTR_PM655360 -RTC_TSTR_ST655360 -RTC_TSTR_ST_0655360 -RTC_TSTR_ST_1655360 -RTC_TSTR_ST_2655360 -RTC_TSTR_SU655360 -RTC_TSTR_SU_0655360 -RTC_TSTR_SU_1655360 -RTC_TSTR_SU_2655360 -RTC_TSTR_SU_3655360 -RTC_WPR_KEY655360 -SCB655360 -SCB_AIRCR_ENDIANESS_Msk655360 -SCB_AIRCR_ENDIANESS_Pos655360 -SCB_AIRCR_SYSRESETREQ_Msk655360 -SCB_AIRCR_SYSRESETREQ_Pos655360 -SCB_AIRCR_VECTCLRACTIVE_Msk655360 -SCB_AIRCR_VECTCLRACTIVE_Pos655360 -SCB_AIRCR_VECTKEYSTAT_Msk655360 -SCB_AIRCR_VECTKEYSTAT_Pos655360 -SCB_AIRCR_VECTKEY_Msk655360 -SCB_AIRCR_VECTKEY_Pos655360 -SCB_BASE655360 -SCB_CCR_STKALIGN_Msk655360 -SCB_CCR_STKALIGN_Pos655360 -SCB_CCR_UNALIGN_TRP_Msk655360 -SCB_CCR_UNALIGN_TRP_Pos655360 -SCB_CPUID_ARCHITECTURE_Msk655360 -SCB_CPUID_ARCHITECTURE_Pos655360 -SCB_CPUID_IMPLEMENTER_Msk655360 -SCB_CPUID_IMPLEMENTER_Pos655360 -SCB_CPUID_PARTNO_Msk655360 -SCB_CPUID_PARTNO_Pos655360 -SCB_CPUID_REVISION_Msk655360 -SCB_CPUID_REVISION_Pos655360 -SCB_CPUID_VARIANT_Msk655360 -SCB_CPUID_VARIANT_Pos655360 -SCB_ICSR_ISRPENDING_Msk655360 -SCB_ICSR_ISRPENDING_Pos655360 -SCB_ICSR_ISRPREEMPT_Msk655360 -SCB_ICSR_ISRPREEMPT_Pos655360 -SCB_ICSR_NMIPENDSET_Msk655360 -SCB_ICSR_NMIPENDSET_Pos655360 -SCB_ICSR_PENDSTCLR_Msk655360 -SCB_ICSR_PENDSTCLR_Pos655360 -SCB_ICSR_PENDSTSET_Msk655360 -SCB_ICSR_PENDSTSET_Pos655360 -SCB_ICSR_PENDSVCLR_Msk655360 -SCB_ICSR_PENDSVCLR_Pos655360 -SCB_ICSR_PENDSVSET_Msk655360 -SCB_ICSR_PENDSVSET_Pos655360 -SCB_ICSR_VECTACTIVE_Msk655360 -SCB_ICSR_VECTACTIVE_Pos655360 -SCB_ICSR_VECTPENDING_Msk655360 -SCB_ICSR_VECTPENDING_Pos655360 -SCB_SCR_SEVONPEND_Msk655360 -SCB_SCR_SEVONPEND_Pos655360 -SCB_SCR_SLEEPDEEP_Msk655360 -SCB_SCR_SLEEPDEEP_Pos655360 -SCB_SCR_SLEEPONEXIT_Msk655360 -SCB_SCR_SLEEPONEXIT_Pos655360 -SCB_SHCSR_SVCALLPENDED_Msk655360 -SCB_SHCSR_SVCALLPENDED_Pos655360 -SCS_BASE655360 -SEND131072(str)0 -SEND_BREAK655360 -SEND_ENCAPSULATED_COMMAND655360 -SETLINECODING131072()0 -SET_ADDRESS655360 -SET_BIT131072(REG,BIT)0 -SET_COMM_FEATURE655360 -SET_CONFIGURATION655360 -SET_CONTROL_LINE_STATE655360 -SET_DESCRIPTOR655360 -SET_DTOG_RX131072(R)0 -SET_DTOG_TX131072(R)0 -SET_FEATURE655360 -SET_INTERFACE655360 -SET_LINE_CODING655360 -SET_NAK_RX131072(R)0 -SET_NAK_TX131072(R)0 -SET_STALL_RX131072(R)0 -SET_STALL_TX131072(R)0 -SET_VALID_RX131072(R)0 -SET_VALID_TX131072(R)0 -SIG_ATOMIC_MAX655360 -SIG_ATOMIC_MIN655360 -SIG_ATOMIC_WIDTH655360 -SIZE_MAX655360 -SIZE_WIDTH655360 -SPI1655360 -SPI1_BASE655360 -SPI2655360 -SPI2_BASE655360 -SPI_CR1_BIDIMODE655360 -SPI_CR1_BIDIOE655360 -SPI_CR1_BR655360 -SPI_CR1_BR_0655360 -SPI_CR1_BR_1655360 -SPI_CR1_BR_2655360 -SPI_CR1_CPHA655360 -SPI_CR1_CPOL655360 -SPI_CR1_CRCEN655360 -SPI_CR1_CRCL655360 -SPI_CR1_CRCNEXT655360 -SPI_CR1_LSBFIRST655360 -SPI_CR1_MSTR655360 -SPI_CR1_RXONLY655360 -SPI_CR1_SPE655360 -SPI_CR1_SSI655360 -SPI_CR1_SSM655360 -SPI_CR2_DS655360 -SPI_CR2_DS_0655360 -SPI_CR2_DS_1655360 -SPI_CR2_DS_2655360 -SPI_CR2_DS_3655360 -SPI_CR2_ERRIE655360 -SPI_CR2_FRF655360 -SPI_CR2_FRXTH655360 -SPI_CR2_LDMARX655360 -SPI_CR2_LDMATX655360 -SPI_CR2_NSSP655360 -SPI_CR2_RXDMAEN655360 -SPI_CR2_RXNEIE655360 -SPI_CR2_SSOE655360 -SPI_CR2_TXDMAEN655360 -SPI_CR2_TXEIE655360 -SPI_CRCPR_CRCPOLY655360 -SPI_DR_DR655360 -SPI_I2SCFGR_CHLEN655360 -SPI_I2SCFGR_CKPOL655360 -SPI_I2SCFGR_DATLEN655360 -SPI_I2SCFGR_DATLEN_0655360 -SPI_I2SCFGR_DATLEN_1655360 -SPI_I2SCFGR_I2SCFG655360 -SPI_I2SCFGR_I2SCFG_0655360 -SPI_I2SCFGR_I2SCFG_1655360 -SPI_I2SCFGR_I2SE655360 -SPI_I2SCFGR_I2SMOD655360 -SPI_I2SCFGR_I2SSTD655360 -SPI_I2SCFGR_I2SSTD_0655360 -SPI_I2SCFGR_I2SSTD_1655360 -SPI_I2SCFGR_PCMSYNC655360 -SPI_I2SPR_I2SDIV655360 -SPI_I2SPR_MCKOE655360 -SPI_I2SPR_ODD655360 -SPI_RXCRCR_RXCRC655360 -SPI_SR_BSY655360 -SPI_SR_CHSIDE655360 -SPI_SR_CRCERR655360 -SPI_SR_FRE655360 -SPI_SR_FRLVL655360 -SPI_SR_FRLVL_0655360 -SPI_SR_FRLVL_1655360 -SPI_SR_FTLVL655360 -SPI_SR_FTLVL_0655360 -SPI_SR_FTLVL_1655360 -SPI_SR_MODF655360 -SPI_SR_OVR655360 -SPI_SR_RXNE655360 -SPI_SR_TXE655360 -SPI_SR_UDR655360 -SPI_TXCRCR_TXCRC655360 -SRAM_BASE655360 -STM32F0655360 -STM32F042x6655360 -STR131072(s)0 -STRING_LANG_DESCRIPTOR655360 -STRING_LANG_DESCRIPTOR_SIZE_BYTE655360 -STRING_MAN_DESCRIPTOR655360 -STRING_PROD_DESCRIPTOR655360 -STRING_SN_DESCRIPTOR655360 -STR_HELPER131072(s)0 -SYNC_FRAME655360 -SYSCFG655360 -SYSCFG_BASE655360 -SYSCFG_CFGR1_ADC_DMA_RMP655360 -SYSCFG_CFGR1_DMA_RMP655360 -SYSCFG_CFGR1_I2C_FMP_I2C1655360 -SYSCFG_CFGR1_I2C_FMP_I2C2655360 -SYSCFG_CFGR1_I2C_FMP_PA10655360 -SYSCFG_CFGR1_I2C_FMP_PA9655360 -SYSCFG_CFGR1_I2C_FMP_PB6655360 -SYSCFG_CFGR1_I2C_FMP_PB7655360 -SYSCFG_CFGR1_I2C_FMP_PB8655360 -SYSCFG_CFGR1_I2C_FMP_PB9655360 -SYSCFG_CFGR1_MEM_MODE655360 -SYSCFG_CFGR1_MEM_MODE_0655360 -SYSCFG_CFGR1_MEM_MODE_1655360 -SYSCFG_CFGR1_PA11_PA12_RMP655360 -SYSCFG_CFGR1_TIM16_DMA_RMP655360 -SYSCFG_CFGR1_TIM17_DMA_RMP655360 -SYSCFG_CFGR1_USART1RX_DMA_RMP655360 -SYSCFG_CFGR1_USART1TX_DMA_RMP655360 -SYSCFG_CFGR2_LOCKUP_LOCK655360 -SYSCFG_CFGR2_PVD_LOCK655360 -SYSCFG_CFGR2_SRAM_PARITY_LOCK655360 -SYSCFG_CFGR2_SRAM_PE655360 -SYSCFG_CFGR2_SRAM_PEF655360 -SYSCFG_EXTICR1_EXTI0655360 -SYSCFG_EXTICR1_EXTI0_PA655360 -SYSCFG_EXTICR1_EXTI0_PB655360 -SYSCFG_EXTICR1_EXTI0_PC655360 -SYSCFG_EXTICR1_EXTI0_PD655360 -SYSCFG_EXTICR1_EXTI0_PE655360 -SYSCFG_EXTICR1_EXTI0_PF655360 -SYSCFG_EXTICR1_EXTI1655360 -SYSCFG_EXTICR1_EXTI1_PA655360 -SYSCFG_EXTICR1_EXTI1_PB655360 -SYSCFG_EXTICR1_EXTI1_PC655360 -SYSCFG_EXTICR1_EXTI1_PD655360 -SYSCFG_EXTICR1_EXTI1_PE655360 -SYSCFG_EXTICR1_EXTI1_PF655360 -SYSCFG_EXTICR1_EXTI2655360 -SYSCFG_EXTICR1_EXTI2_PA655360 -SYSCFG_EXTICR1_EXTI2_PB655360 -SYSCFG_EXTICR1_EXTI2_PC655360 -SYSCFG_EXTICR1_EXTI2_PD655360 -SYSCFG_EXTICR1_EXTI2_PE655360 -SYSCFG_EXTICR1_EXTI2_PF655360 -SYSCFG_EXTICR1_EXTI3655360 -SYSCFG_EXTICR1_EXTI3_PA655360 -SYSCFG_EXTICR1_EXTI3_PB655360 -SYSCFG_EXTICR1_EXTI3_PC655360 -SYSCFG_EXTICR1_EXTI3_PD655360 -SYSCFG_EXTICR1_EXTI3_PE655360 -SYSCFG_EXTICR1_EXTI3_PF655360 -SYSCFG_EXTICR2_EXTI4655360 -SYSCFG_EXTICR2_EXTI4_PA655360 -SYSCFG_EXTICR2_EXTI4_PB655360 -SYSCFG_EXTICR2_EXTI4_PC655360 -SYSCFG_EXTICR2_EXTI4_PD655360 -SYSCFG_EXTICR2_EXTI4_PE655360 -SYSCFG_EXTICR2_EXTI4_PF655360 -SYSCFG_EXTICR2_EXTI5655360 -SYSCFG_EXTICR2_EXTI5_PA655360 -SYSCFG_EXTICR2_EXTI5_PB655360 -SYSCFG_EXTICR2_EXTI5_PC655360 -SYSCFG_EXTICR2_EXTI5_PD655360 -SYSCFG_EXTICR2_EXTI5_PE655360 -SYSCFG_EXTICR2_EXTI5_PF655360 -SYSCFG_EXTICR2_EXTI6655360 -SYSCFG_EXTICR2_EXTI6_PA655360 -SYSCFG_EXTICR2_EXTI6_PB655360 -SYSCFG_EXTICR2_EXTI6_PC655360 -SYSCFG_EXTICR2_EXTI6_PD655360 -SYSCFG_EXTICR2_EXTI6_PE655360 -SYSCFG_EXTICR2_EXTI6_PF655360 -SYSCFG_EXTICR2_EXTI7655360 -SYSCFG_EXTICR2_EXTI7_PA655360 -SYSCFG_EXTICR2_EXTI7_PB655360 -SYSCFG_EXTICR2_EXTI7_PC655360 -SYSCFG_EXTICR2_EXTI7_PD655360 -SYSCFG_EXTICR2_EXTI7_PE655360 -SYSCFG_EXTICR2_EXTI7_PF655360 -SYSCFG_EXTICR3_EXTI10655360 -SYSCFG_EXTICR3_EXTI10_PA655360 -SYSCFG_EXTICR3_EXTI10_PB655360 -SYSCFG_EXTICR3_EXTI10_PC655360 -SYSCFG_EXTICR3_EXTI10_PD655360 -SYSCFG_EXTICR3_EXTI10_PE655360 -SYSCFG_EXTICR3_EXTI10_PF655360 -SYSCFG_EXTICR3_EXTI11655360 -SYSCFG_EXTICR3_EXTI11_PA655360 -SYSCFG_EXTICR3_EXTI11_PB655360 -SYSCFG_EXTICR3_EXTI11_PC655360 -SYSCFG_EXTICR3_EXTI11_PD655360 -SYSCFG_EXTICR3_EXTI11_PE655360 -SYSCFG_EXTICR3_EXTI8655360 -SYSCFG_EXTICR3_EXTI8_PA655360 -SYSCFG_EXTICR3_EXTI8_PB655360 -SYSCFG_EXTICR3_EXTI8_PC655360 -SYSCFG_EXTICR3_EXTI8_PD655360 -SYSCFG_EXTICR3_EXTI8_PE655360 -SYSCFG_EXTICR3_EXTI9655360 -SYSCFG_EXTICR3_EXTI9_PA655360 -SYSCFG_EXTICR3_EXTI9_PB655360 -SYSCFG_EXTICR3_EXTI9_PC655360 -SYSCFG_EXTICR3_EXTI9_PD655360 -SYSCFG_EXTICR3_EXTI9_PE655360 -SYSCFG_EXTICR3_EXTI9_PF655360 -SYSCFG_EXTICR4_EXTI12655360 -SYSCFG_EXTICR4_EXTI12_PA655360 -SYSCFG_EXTICR4_EXTI12_PB655360 -SYSCFG_EXTICR4_EXTI12_PC655360 -SYSCFG_EXTICR4_EXTI12_PD655360 -SYSCFG_EXTICR4_EXTI12_PE655360 -SYSCFG_EXTICR4_EXTI13655360 -SYSCFG_EXTICR4_EXTI13_PA655360 -SYSCFG_EXTICR4_EXTI13_PB655360 -SYSCFG_EXTICR4_EXTI13_PC655360 -SYSCFG_EXTICR4_EXTI13_PD655360 -SYSCFG_EXTICR4_EXTI13_PE655360 -SYSCFG_EXTICR4_EXTI14655360 -SYSCFG_EXTICR4_EXTI14_PA655360 -SYSCFG_EXTICR4_EXTI14_PB655360 -SYSCFG_EXTICR4_EXTI14_PC655360 -SYSCFG_EXTICR4_EXTI14_PD655360 -SYSCFG_EXTICR4_EXTI14_PE655360 -SYSCFG_EXTICR4_EXTI15655360 -SYSCFG_EXTICR4_EXTI15_PA655360 -SYSCFG_EXTICR4_EXTI15_PB655360 -SYSCFG_EXTICR4_EXTI15_PC655360 -SYSCFG_EXTICR4_EXTI15_PD655360 -SYSCFG_EXTICR4_EXTI15_PE655360 -StartHSE16()0inline void -StartHSI4816()0inline void -SysTick655360 -SysTick_BASE655360 -SysTick_CALIB_NOREF_Msk655360 -SysTick_CALIB_NOREF_Pos655360 -SysTick_CALIB_SKEW_Msk655360 -SysTick_CALIB_SKEW_Pos655360 -SysTick_CALIB_TENMS_Msk655360 -SysTick_CALIB_TENMS_Pos655360 -SysTick_CTRL_CLKSOURCE_Msk655360 -SysTick_CTRL_CLKSOURCE_Pos655360 -SysTick_CTRL_COUNTFLAG_Msk655360 -SysTick_CTRL_COUNTFLAG_Pos655360 -SysTick_CTRL_ENABLE_Msk655360 -SysTick_CTRL_ENABLE_Pos655360 -SysTick_CTRL_TICKINT_Msk655360 -SysTick_CTRL_TICKINT_Pos655360 -SysTick_LOAD_RELOAD_Msk655360 -SysTick_LOAD_RELOAD_Pos655360 -SysTick_VAL_CURRENT_Msk655360 -SysTick_VAL_CURRENT_Pos655360 -TARG_ID655360 -TEMP110_CAL_ADDR655360 -TEMP30_CAL_ADDR655360 -TIM1655360 -TIM14655360 -TIM14_BASE655360 -TIM14_OR_TI1_RMP655360 -TIM14_OR_TI1_RMP_0655360 -TIM14_OR_TI1_RMP_1655360 -TIM16655360 -TIM16_BASE655360 -TIM17655360 -TIM17_BASE655360 -TIM1_BASE655360 -TIM2655360 -TIM2_BASE655360 -TIM3655360 -TIM3_BASE655360 -TIMEOUT_MS655360 -TIM_ARR_ARR655360 -TIM_BDTR_AOE655360 -TIM_BDTR_BKE655360 -TIM_BDTR_BKP655360 -TIM_BDTR_DTG655360 -TIM_BDTR_DTG_0655360 -TIM_BDTR_DTG_1655360 -TIM_BDTR_DTG_2655360 -TIM_BDTR_DTG_3655360 -TIM_BDTR_DTG_4655360 -TIM_BDTR_DTG_5655360 -TIM_BDTR_DTG_6655360 -TIM_BDTR_DTG_7655360 -TIM_BDTR_LOCK655360 -TIM_BDTR_LOCK_0655360 -TIM_BDTR_LOCK_1655360 -TIM_BDTR_MOE655360 -TIM_BDTR_OSSI655360 -TIM_BDTR_OSSR655360 -TIM_CCER_CC1E655360 -TIM_CCER_CC1NE655360 -TIM_CCER_CC1NP655360 -TIM_CCER_CC1P655360 -TIM_CCER_CC2E655360 -TIM_CCER_CC2NE655360 -TIM_CCER_CC2NP655360 -TIM_CCER_CC2P655360 -TIM_CCER_CC3E655360 -TIM_CCER_CC3NE655360 -TIM_CCER_CC3NP655360 -TIM_CCER_CC3P655360 -TIM_CCER_CC4E655360 -TIM_CCER_CC4NP655360 -TIM_CCER_CC4P655360 -TIM_CCMR1_CC1S655360 -TIM_CCMR1_CC1S_0655360 -TIM_CCMR1_CC1S_1655360 -TIM_CCMR1_CC2S655360 -TIM_CCMR1_CC2S_0655360 -TIM_CCMR1_CC2S_1655360 -TIM_CCMR1_IC1F655360 -TIM_CCMR1_IC1F_0655360 -TIM_CCMR1_IC1F_1655360 -TIM_CCMR1_IC1F_2655360 -TIM_CCMR1_IC1F_3655360 -TIM_CCMR1_IC1PSC655360 -TIM_CCMR1_IC1PSC_0655360 -TIM_CCMR1_IC1PSC_1655360 -TIM_CCMR1_IC2F655360 -TIM_CCMR1_IC2F_0655360 -TIM_CCMR1_IC2F_1655360 -TIM_CCMR1_IC2F_2655360 -TIM_CCMR1_IC2F_3655360 -TIM_CCMR1_IC2PSC655360 -TIM_CCMR1_IC2PSC_0655360 -TIM_CCMR1_IC2PSC_1655360 -TIM_CCMR1_OC1CE655360 -TIM_CCMR1_OC1FE655360 -TIM_CCMR1_OC1M655360 -TIM_CCMR1_OC1M_0655360 -TIM_CCMR1_OC1M_1655360 -TIM_CCMR1_OC1M_2655360 -TIM_CCMR1_OC1PE655360 -TIM_CCMR1_OC2CE655360 -TIM_CCMR1_OC2FE655360 -TIM_CCMR1_OC2M655360 -TIM_CCMR1_OC2M_0655360 -TIM_CCMR1_OC2M_1655360 -TIM_CCMR1_OC2M_2655360 -TIM_CCMR1_OC2PE655360 -TIM_CCMR2_CC3S655360 -TIM_CCMR2_CC3S_0655360 -TIM_CCMR2_CC3S_1655360 -TIM_CCMR2_CC4S655360 -TIM_CCMR2_CC4S_0655360 -TIM_CCMR2_CC4S_1655360 -TIM_CCMR2_IC3F655360 -TIM_CCMR2_IC3F_0655360 -TIM_CCMR2_IC3F_1655360 -TIM_CCMR2_IC3F_2655360 -TIM_CCMR2_IC3F_3655360 -TIM_CCMR2_IC3PSC655360 -TIM_CCMR2_IC3PSC_0655360 -TIM_CCMR2_IC3PSC_1655360 -TIM_CCMR2_IC4F655360 -TIM_CCMR2_IC4F_0655360 -TIM_CCMR2_IC4F_1655360 -TIM_CCMR2_IC4F_2655360 -TIM_CCMR2_IC4F_3655360 -TIM_CCMR2_IC4PSC655360 -TIM_CCMR2_IC4PSC_0655360 -TIM_CCMR2_IC4PSC_1655360 -TIM_CCMR2_OC3CE655360 -TIM_CCMR2_OC3FE655360 -TIM_CCMR2_OC3M655360 -TIM_CCMR2_OC3M_0655360 -TIM_CCMR2_OC3M_1655360 -TIM_CCMR2_OC3M_2655360 -TIM_CCMR2_OC3PE655360 -TIM_CCMR2_OC4CE655360 -TIM_CCMR2_OC4FE655360 -TIM_CCMR2_OC4M655360 -TIM_CCMR2_OC4M_0655360 -TIM_CCMR2_OC4M_1655360 -TIM_CCMR2_OC4M_2655360 -TIM_CCMR2_OC4PE655360 -TIM_CCR1_CCR1655360 -TIM_CCR2_CCR2655360 -TIM_CCR3_CCR3655360 -TIM_CCR4_CCR4655360 -TIM_CNT_CNT655360 -TIM_CR1_ARPE655360 -TIM_CR1_CEN655360 -TIM_CR1_CKD655360 -TIM_CR1_CKD_0655360 -TIM_CR1_CKD_1655360 -TIM_CR1_CMS655360 -TIM_CR1_CMS_0655360 -TIM_CR1_CMS_1655360 -TIM_CR1_DIR655360 -TIM_CR1_OPM655360 -TIM_CR1_UDIS655360 -TIM_CR1_URS655360 -TIM_CR2_CCDS655360 -TIM_CR2_CCPC655360 -TIM_CR2_CCUS655360 -TIM_CR2_MMS655360 -TIM_CR2_MMS_0655360 -TIM_CR2_MMS_1655360 -TIM_CR2_MMS_2655360 -TIM_CR2_OIS1655360 -TIM_CR2_OIS1N655360 -TIM_CR2_OIS2655360 -TIM_CR2_OIS2N655360 -TIM_CR2_OIS3655360 -TIM_CR2_OIS3N655360 -TIM_CR2_OIS4655360 -TIM_CR2_TI1S655360 -TIM_DCR_DBA655360 -TIM_DCR_DBA_0655360 -TIM_DCR_DBA_1655360 -TIM_DCR_DBA_2655360 -TIM_DCR_DBA_3655360 -TIM_DCR_DBA_4655360 -TIM_DCR_DBL655360 -TIM_DCR_DBL_0655360 -TIM_DCR_DBL_1655360 -TIM_DCR_DBL_2655360 -TIM_DCR_DBL_3655360 -TIM_DCR_DBL_4655360 -TIM_DIER_BIE655360 -TIM_DIER_CC1DE655360 -TIM_DIER_CC1IE655360 -TIM_DIER_CC2DE655360 -TIM_DIER_CC2IE655360 -TIM_DIER_CC3DE655360 -TIM_DIER_CC3IE655360 -TIM_DIER_CC4DE655360 -TIM_DIER_CC4IE655360 -TIM_DIER_COMDE655360 -TIM_DIER_COMIE655360 -TIM_DIER_TDE655360 -TIM_DIER_TIE655360 -TIM_DIER_UDE655360 -TIM_DIER_UIE655360 -TIM_DMAR_DMAB655360 -TIM_EGR_BG655360 -TIM_EGR_CC1G655360 -TIM_EGR_CC2G655360 -TIM_EGR_CC3G655360 -TIM_EGR_CC4G655360 -TIM_EGR_COMG655360 -TIM_EGR_TG655360 -TIM_EGR_UG655360 -TIM_PSC_PSC655360 -TIM_RCR_REP655360 -TIM_SMCR_ECE655360 -TIM_SMCR_ETF655360 -TIM_SMCR_ETF_0655360 -TIM_SMCR_ETF_1655360 -TIM_SMCR_ETF_2655360 -TIM_SMCR_ETF_3655360 -TIM_SMCR_ETP655360 -TIM_SMCR_ETPS655360 -TIM_SMCR_ETPS_0655360 -TIM_SMCR_ETPS_1655360 -TIM_SMCR_MSM655360 -TIM_SMCR_OCCS655360 -TIM_SMCR_SMS655360 -TIM_SMCR_SMS_0655360 -TIM_SMCR_SMS_1655360 -TIM_SMCR_SMS_2655360 -TIM_SMCR_TS655360 -TIM_SMCR_TS_0655360 -TIM_SMCR_TS_1655360 -TIM_SMCR_TS_2655360 -TIM_SR_BIF655360 -TIM_SR_CC1IF655360 -TIM_SR_CC1OF655360 -TIM_SR_CC2IF655360 -TIM_SR_CC2OF655360 -TIM_SR_CC3IF655360 -TIM_SR_CC3OF655360 -TIM_SR_CC4IF655360 -TIM_SR_CC4OF655360 -TIM_SR_COMIF655360 -TIM_SR_TIF655360 -TIM_SR_UIF655360 -TOGGLE_DTOG_RX131072(R)0 -TOGGLE_DTOG_TX131072(R)0 -TRUE_INLINE655360 -TSC655360 -TSC_BASE655360 -TSC_CR_AM655360 -TSC_CR_CTPH655360 -TSC_CR_CTPH_0655360 -TSC_CR_CTPH_1655360 -TSC_CR_CTPH_2655360 -TSC_CR_CTPH_3655360 -TSC_CR_CTPL655360 -TSC_CR_CTPL_0655360 -TSC_CR_CTPL_1655360 -TSC_CR_CTPL_2655360 -TSC_CR_CTPL_3655360 -TSC_CR_IODEF655360 -TSC_CR_MCV655360 -TSC_CR_MCV_0655360 -TSC_CR_MCV_1655360 -TSC_CR_MCV_2655360 -TSC_CR_PGPSC655360 -TSC_CR_PGPSC_0655360 -TSC_CR_PGPSC_1655360 -TSC_CR_PGPSC_2655360 -TSC_CR_SSD655360 -TSC_CR_SSD_0655360 -TSC_CR_SSD_1655360 -TSC_CR_SSD_2655360 -TSC_CR_SSD_3655360 -TSC_CR_SSD_4655360 -TSC_CR_SSD_5655360 -TSC_CR_SSD_6655360 -TSC_CR_SSE655360 -TSC_CR_SSPSC655360 -TSC_CR_START655360 -TSC_CR_SYNCPOL655360 -TSC_CR_TSCE655360 -TSC_ICR_EOAIC655360 -TSC_ICR_MCEIC655360 -TSC_IER_EOAIE655360 -TSC_IER_MCEIE655360 -TSC_IOASCR_G1_IO1655360 -TSC_IOASCR_G1_IO2655360 -TSC_IOASCR_G1_IO3655360 -TSC_IOASCR_G1_IO4655360 -TSC_IOASCR_G2_IO1655360 -TSC_IOASCR_G2_IO2655360 -TSC_IOASCR_G2_IO3655360 -TSC_IOASCR_G2_IO4655360 -TSC_IOASCR_G3_IO1655360 -TSC_IOASCR_G3_IO2655360 -TSC_IOASCR_G3_IO3655360 -TSC_IOASCR_G3_IO4655360 -TSC_IOASCR_G4_IO1655360 -TSC_IOASCR_G4_IO2655360 -TSC_IOASCR_G4_IO3655360 -TSC_IOASCR_G4_IO4655360 -TSC_IOASCR_G5_IO1655360 -TSC_IOASCR_G5_IO2655360 -TSC_IOASCR_G5_IO3655360 -TSC_IOASCR_G5_IO4655360 -TSC_IOASCR_G6_IO1655360 -TSC_IOASCR_G6_IO2655360 -TSC_IOASCR_G6_IO3655360 -TSC_IOASCR_G6_IO4655360 -TSC_IOASCR_G7_IO1655360 -TSC_IOASCR_G7_IO2655360 -TSC_IOASCR_G7_IO3655360 -TSC_IOASCR_G7_IO4655360 -TSC_IOASCR_G8_IO1655360 -TSC_IOASCR_G8_IO2655360 -TSC_IOASCR_G8_IO3655360 -TSC_IOASCR_G8_IO4655360 -TSC_IOCCR_G1_IO1655360 -TSC_IOCCR_G1_IO2655360 -TSC_IOCCR_G1_IO3655360 -TSC_IOCCR_G1_IO4655360 -TSC_IOCCR_G2_IO1655360 -TSC_IOCCR_G2_IO2655360 -TSC_IOCCR_G2_IO3655360 -TSC_IOCCR_G2_IO4655360 -TSC_IOCCR_G3_IO1655360 -TSC_IOCCR_G3_IO2655360 -TSC_IOCCR_G3_IO3655360 -TSC_IOCCR_G3_IO4655360 -TSC_IOCCR_G4_IO1655360 -TSC_IOCCR_G4_IO2655360 -TSC_IOCCR_G4_IO3655360 -TSC_IOCCR_G4_IO4655360 -TSC_IOCCR_G5_IO1655360 -TSC_IOCCR_G5_IO2655360 -TSC_IOCCR_G5_IO3655360 -TSC_IOCCR_G5_IO4655360 -TSC_IOCCR_G6_IO1655360 -TSC_IOCCR_G6_IO2655360 -TSC_IOCCR_G6_IO3655360 -TSC_IOCCR_G6_IO4655360 -TSC_IOCCR_G7_IO1655360 -TSC_IOCCR_G7_IO2655360 -TSC_IOCCR_G7_IO3655360 -TSC_IOCCR_G7_IO4655360 -TSC_IOCCR_G8_IO1655360 -TSC_IOCCR_G8_IO2655360 -TSC_IOCCR_G8_IO3655360 -TSC_IOCCR_G8_IO4655360 -TSC_IOGCSR_G1E655360 -TSC_IOGCSR_G1S655360 -TSC_IOGCSR_G2E655360 -TSC_IOGCSR_G2S655360 -TSC_IOGCSR_G3E655360 -TSC_IOGCSR_G3S655360 -TSC_IOGCSR_G4E655360 -TSC_IOGCSR_G4S655360 -TSC_IOGCSR_G5E655360 -TSC_IOGCSR_G5S655360 -TSC_IOGCSR_G6E655360 -TSC_IOGCSR_G6S655360 -TSC_IOGCSR_G7E655360 -TSC_IOGCSR_G7S655360 -TSC_IOGCSR_G8E655360 -TSC_IOGCSR_G8S655360 -TSC_IOGXCR_CNT655360 -TSC_IOHCR_G1_IO1655360 -TSC_IOHCR_G1_IO2655360 -TSC_IOHCR_G1_IO3655360 -TSC_IOHCR_G1_IO4655360 -TSC_IOHCR_G2_IO1655360 -TSC_IOHCR_G2_IO2655360 -TSC_IOHCR_G2_IO3655360 -TSC_IOHCR_G2_IO4655360 -TSC_IOHCR_G3_IO1655360 -TSC_IOHCR_G3_IO2655360 -TSC_IOHCR_G3_IO3655360 -TSC_IOHCR_G3_IO4655360 -TSC_IOHCR_G4_IO1655360 -TSC_IOHCR_G4_IO2655360 -TSC_IOHCR_G4_IO3655360 -TSC_IOHCR_G4_IO4655360 -TSC_IOHCR_G5_IO1655360 -TSC_IOHCR_G5_IO2655360 -TSC_IOHCR_G5_IO3655360 -TSC_IOHCR_G5_IO4655360 -TSC_IOHCR_G6_IO1655360 -TSC_IOHCR_G6_IO2655360 -TSC_IOHCR_G6_IO3655360 -TSC_IOHCR_G6_IO4655360 -TSC_IOHCR_G7_IO1655360 -TSC_IOHCR_G7_IO2655360 -TSC_IOHCR_G7_IO3655360 -TSC_IOHCR_G7_IO4655360 -TSC_IOHCR_G8_IO1655360 -TSC_IOHCR_G8_IO2655360 -TSC_IOHCR_G8_IO3655360 -TSC_IOHCR_G8_IO4655360 -TSC_IOSCR_G1_IO1655360 -TSC_IOSCR_G1_IO2655360 -TSC_IOSCR_G1_IO3655360 -TSC_IOSCR_G1_IO4655360 -TSC_IOSCR_G2_IO1655360 -TSC_IOSCR_G2_IO2655360 -TSC_IOSCR_G2_IO3655360 -TSC_IOSCR_G2_IO4655360 -TSC_IOSCR_G3_IO1655360 -TSC_IOSCR_G3_IO2655360 -TSC_IOSCR_G3_IO3655360 -TSC_IOSCR_G3_IO4655360 -TSC_IOSCR_G4_IO1655360 -TSC_IOSCR_G4_IO2655360 -TSC_IOSCR_G4_IO3655360 -TSC_IOSCR_G4_IO4655360 -TSC_IOSCR_G5_IO1655360 -TSC_IOSCR_G5_IO2655360 -TSC_IOSCR_G5_IO3655360 -TSC_IOSCR_G5_IO4655360 -TSC_IOSCR_G6_IO1655360 -TSC_IOSCR_G6_IO2655360 -TSC_IOSCR_G6_IO3655360 -TSC_IOSCR_G6_IO4655360 -TSC_IOSCR_G7_IO1655360 -TSC_IOSCR_G7_IO2655360 -TSC_IOSCR_G7_IO3655360 -TSC_IOSCR_G7_IO4655360 -TSC_IOSCR_G8_IO1655360 -TSC_IOSCR_G8_IO2655360 -TSC_IOSCR_G8_IO3655360 -TSC_IOSCR_G8_IO4655360 -TSC_ISR_EOAF655360 -TSC_ISR_MCEF655360 -Tms163840volatile uint32_t -Tms327680volatile uint32_t -UARTBUFSZI655360 -UARTBUFSZO655360 -UINT16_C131072(c)0 -UINT16_MAX655360 -UINT16_WIDTH655360 -UINT32_C131072(c)0 -UINT32_MAX655360 -UINT32_WIDTH655360 -UINT64_C131072(c)0 -UINT64_MAX655360 -UINT64_WIDTH655360 -UINT8_C131072(c)0 -UINT8_MAX655360 -UINT8_WIDTH655360 -UINTMAX_C131072(c)0 -UINTMAX_MAX655360 -UINTMAX_WIDTH655360 -UINTPTR_MAX655360 -UINTPTR_WIDTH655360 -UINT_FAST16_MAX655360 -UINT_FAST16_WIDTH655360 -UINT_FAST32_MAX655360 -UINT_FAST32_WIDTH655360 -UINT_FAST64_MAX655360 -UINT_FAST64_WIDTH655360 -UINT_FAST8_MAX655360 -UINT_FAST8_WIDTH655360 -UINT_LEAST16_MAX655360 -UINT_LEAST16_WIDTH655360 -UINT_LEAST32_MAX655360 -UINT_LEAST32_WIDTH655360 -UINT_LEAST64_MAX655360 -UINT_LEAST64_WIDTH655360 -UINT_LEAST8_MAX655360 -UINT_LEAST8_WIDTH655360 -USART1655360 -USART1_BASE655360 -USART2655360 -USART2_BASE655360 -USARTNUM655360 -USARTX655360 -USART_BRR_DIV_FRACTION655360 -USART_BRR_DIV_MANTISSA655360 -USART_CR1_CMIE655360 -USART_CR1_DEAT655360 -USART_CR1_DEAT_0655360 -USART_CR1_DEAT_1655360 -USART_CR1_DEAT_2655360 -USART_CR1_DEAT_3655360 -USART_CR1_DEAT_4655360 -USART_CR1_DEDT655360 -USART_CR1_DEDT_0655360 -USART_CR1_DEDT_1655360 -USART_CR1_DEDT_2655360 -USART_CR1_DEDT_3655360 -USART_CR1_DEDT_4655360 -USART_CR1_EOBIE655360 -USART_CR1_IDLEIE655360 -USART_CR1_M655360 -USART_CR1_M0655360 -USART_CR1_M1655360 -USART_CR1_MME655360 -USART_CR1_OVER8655360 -USART_CR1_PCE655360 -USART_CR1_PEIE655360 -USART_CR1_PS655360 -USART_CR1_RE655360 -USART_CR1_RTOIE655360 -USART_CR1_RXNEIE655360 -USART_CR1_TCIE655360 -USART_CR1_TE655360 -USART_CR1_TXEIE655360 -USART_CR1_UE655360 -USART_CR1_UESM655360 -USART_CR1_WAKE655360 -USART_CR2_ABREN655360 -USART_CR2_ABRMODE655360 -USART_CR2_ABRMODE_0655360 -USART_CR2_ABRMODE_1655360 -USART_CR2_ADD655360 -USART_CR2_ADDM7655360 -USART_CR2_ADD_SHIFT655360 -USART_CR2_ADD_VAL131072(x)0 -USART_CR2_CLKEN655360 -USART_CR2_CPHA655360 -USART_CR2_CPOL655360 -USART_CR2_DATAINV655360 -USART_CR2_LBCL655360 -USART_CR2_LBDIE655360 -USART_CR2_LBDL655360 -USART_CR2_LINEN655360 -USART_CR2_MSBFIRST655360 -USART_CR2_RTOEN655360 -USART_CR2_RXINV655360 -USART_CR2_STOP655360 -USART_CR2_STOP_0655360 -USART_CR2_STOP_1655360 -USART_CR2_SWAP655360 -USART_CR2_TXINV655360 -USART_CR3_CTSE655360 -USART_CR3_CTSIE655360 -USART_CR3_DDRE655360 -USART_CR3_DEM655360 -USART_CR3_DEP655360 -USART_CR3_DMAR655360 -USART_CR3_DMAT655360 -USART_CR3_EIE655360 -USART_CR3_HDSEL655360 -USART_CR3_IREN655360 -USART_CR3_IRLP655360 -USART_CR3_NACK655360 -USART_CR3_ONEBIT655360 -USART_CR3_OVRDIS655360 -USART_CR3_RTSE655360 -USART_CR3_SCARCNT655360 -USART_CR3_SCARCNT_0655360 -USART_CR3_SCARCNT_1655360 -USART_CR3_SCARCNT_2655360 -USART_CR3_SCEN655360 -USART_CR3_WUFIE655360 -USART_CR3_WUS655360 -USART_CR3_WUS_0655360 -USART_CR3_WUS_1655360 -USART_GTPR_GT655360 -USART_GTPR_PSC655360 -USART_ICR_CMCF655360 -USART_ICR_CTSCF655360 -USART_ICR_EOBCF655360 -USART_ICR_FECF655360 -USART_ICR_IDLECF655360 -USART_ICR_LBDCF655360 -USART_ICR_NCF655360 -USART_ICR_ORECF655360 -USART_ICR_PECF655360 -USART_ICR_RTOCF655360 -USART_ICR_TCCF655360 -USART_ICR_WUCF655360 -USART_ISR_ABRE655360 -USART_ISR_ABRF655360 -USART_ISR_BUSY655360 -USART_ISR_CMF655360 -USART_ISR_CTS655360 -USART_ISR_CTSIF655360 -USART_ISR_EOBF655360 -USART_ISR_FE655360 -USART_ISR_IDLE655360 -USART_ISR_LBDF655360 -USART_ISR_NE655360 -USART_ISR_ORE655360 -USART_ISR_PE655360 -USART_ISR_REACK655360 -USART_ISR_RTOF655360 -USART_ISR_RWU655360 -USART_ISR_RXNE655360 -USART_ISR_SBKF655360 -USART_ISR_TC655360 -USART_ISR_TEACK655360 -USART_ISR_TXE655360 -USART_ISR_WUF655360 -USART_RDR_RDR655360 -USART_RQR_ABRRQ655360 -USART_RQR_MMRQ655360 -USART_RQR_RXFRQ655360 -USART_RQR_SBKRQ655360 -USART_RQR_TXFRQ655360 -USART_RTOR_BLEN655360 -USART_RTOR_RTO655360 -USART_TDR_TDR655360 -USB655360 -USB_ADDR_RX64anon_struct_10volatile uint16_t -USB_ADDR_TX64anon_struct_10volatile uint16_t -USB_ADRESSED_STATE655360 -USB_Addr64anon_struct_80uint16_t -USB_BASE655360 -USB_BCDR655360 -USB_BCDR_BCDEN655360 -USB_BCDR_DCDEN655360 -USB_BCDR_DCDET655360 -USB_BCDR_DPPU655360 -USB_BCDR_PDEN655360 -USB_BCDR_PDET655360 -USB_BCDR_PS2DET655360 -USB_BCDR_SDEN655360 -USB_BCDR_SDET655360 -USB_BTABLE655360 -USB_BTABLE_BASE655360 -USB_BtableDef40960anon_struct_2 -USB_CDC_1_5_STOP_BITS655360 -USB_CDC_1_STOP_BITS655360 -USB_CDC_2_STOP_BITS655360 -USB_CDC_EVEN_PARITY655360 -USB_CDC_MARK_PARITY655360 -USB_CDC_NO_PARITY655360 -USB_CDC_ODD_PARITY655360 -USB_CDC_SPACE_PARITY655360 -USB_CLR_CTR655360 -USB_CLR_ERR655360 -USB_CLR_ESOF655360 -USB_CLR_L1REQ655360 -USB_CLR_PMAOVR655360 -USB_CLR_RESET655360 -USB_CLR_SOF655360 -USB_CLR_SUSP655360 -USB_CLR_WKUP655360 -USB_CNTR655360 -USB_CNTR_CTRM655360 -USB_CNTR_ERRM655360 -USB_CNTR_ESOFM655360 -USB_CNTR_FRES655360 -USB_CNTR_FSUSP655360 -USB_CNTR_L1REQM655360 -USB_CNTR_L1RESUME655360 -USB_CNTR_LPMODE655360 -USB_CNTR_PDWN655360 -USB_CNTR_PMAOVRM655360 -USB_CNTR_RESETM655360 -USB_CNTR_RESUME655360 -USB_CNTR_SOFM655360 -USB_CNTR_SUSPM655360 -USB_CNTR_WKUPM655360 -USB_CONFIGURE_STATE655360 -USB_COUNT_RX64anon_struct_10volatile uint16_t -USB_COUNT_TX64anon_struct_10volatile uint16_t -USB_COUNTn_NUM_BLOCK655360 -USB_COUNTn_RX655360 -USB_COUNTn_RX_BLSIZE655360 -USB_ConfigDescriptor163840const uint8_t -USB_DADDR655360 -USB_DADDR_ADD655360 -USB_DADDR_EF655360 -USB_DEFAULT_STATE655360 -USB_Dev163840usb_dev_t -USB_DeviceDescriptor163840const uint8_t -USB_DeviceQualifierDescriptor163840const uint8_t -USB_EP0R655360 -USB_EP1R655360 -USB_EP2R655360 -USB_EP3R655360 -USB_EP4R655360 -USB_EP5R655360 -USB_EP6R655360 -USB_EP7R655360 -USB_EPADDR_FIELD655360 -USB_EPDATA_TypeDef40960anon_struct_1 -USB_EPKIND_MASK655360 -USB_EPREG_MASK655360 -USB_EPRX_DTOG1655360 -USB_EPRX_DTOG2655360 -USB_EPRX_DTOGMASK655360 -USB_EPRX_STAT655360 -USB_EPTX_DTOG1655360 -USB_EPTX_DTOG2655360 -USB_EPTX_DTOGMASK655360 -USB_EPTX_STAT655360 -USB_EP_BULK655360 -USB_EP_CONTROL655360 -USB_EP_CTR_RX655360 -USB_EP_CTR_TX655360 -USB_EP_DTOG_RX655360 -USB_EP_DTOG_TX655360 -USB_EP_INTERRUPT655360 -USB_EP_ISOCHRONOUS655360 -USB_EP_KIND655360 -USB_EP_RX_DIS655360 -USB_EP_RX_NAK655360 -USB_EP_RX_STALL655360 -USB_EP_RX_VALID655360 -USB_EP_SETUP655360 -USB_EP_TX_DIS655360 -USB_EP_TX_NAK655360 -USB_EP_TX_STALL655360 -USB_EP_TX_VALID655360 -USB_EP_TYPE_MASK655360 -USB_EP_T_FIELD655360 -USB_EP_T_MASK655360 -USB_EPnR_CTR_RX655360 -USB_EPnR_CTR_TX655360 -USB_EPnR_DTOG_RX655360 -USB_EPnR_DTOG_TX655360 -USB_EPnR_EA655360 -USB_EPnR_EP_KIND655360 -USB_EPnR_EP_TYPE655360 -USB_EPnR_EP_TYPE_0655360 -USB_EPnR_EP_TYPE_1655360 -USB_EPnR_SETUP655360 -USB_EPnR_STAT_RX655360 -USB_EPnR_STAT_RX_0655360 -USB_EPnR_STAT_RX_1655360 -USB_EPnR_STAT_TX655360 -USB_EPnR_STAT_TX_0655360 -USB_EPnR_STAT_TX_1655360 -USB_FNR655360 -USB_FNR_FN655360 -USB_FNR_LCK655360 -USB_FNR_LSOF655360 -USB_FNR_LSOF_0655360 -USB_FNR_RXDM655360 -USB_FNR_RXDP655360 -USB_FNR_lSOF_1655360 -USB_GetState16()0uint8_t -USB_GetState1024()0uint8_t -USB_ISTR655360 -USB_ISTR_CTR655360 -USB_ISTR_DIR655360 -USB_ISTR_EPID655360 -USB_ISTR_EP_ID655360 -USB_ISTR_ERR655360 -USB_ISTR_ESOF655360 -USB_ISTR_L1REQ655360 -USB_ISTR_PMAOVR655360 -USB_ISTR_RESET655360 -USB_ISTR_SOF655360 -USB_ISTR_SUSP655360 -USB_ISTR_WKUP655360 -USB_Init1024()0void -USB_LPMCSR655360 -USB_LPMCSR_BESL655360 -USB_LPMCSR_BESL_0655360 -USB_LPMCSR_BESL_1655360 -USB_LPMCSR_BESL_2655360 -USB_LPMCSR_BESL_3655360 -USB_LPMCSR_LMPEN655360 -USB_LPMCSR_LPMACK655360 -USB_LPMCSR_REMWAKE655360 -USB_PMAADDR655360 -USB_Status64anon_struct_80uint8_t -USB_StringLangDescriptor163840const uint8_t -USB_StringManufacturingDescriptor20480 -USB_StringManufacturingDescriptor163840 -USB_StringProdDescriptor20480 -USB_StringProdDescriptor163840 -USB_StringSerialDescriptor20480 -USB_StringSerialDescriptor163840 -USB_TypeDef655360 -USB_TypeDef_custom40960anon_struct_0 -USB_send16(char *buf)0void -USB_send1024(char *buf)0void -USB_setup16()0void -USB_setup1024()0void -VDDIO2_IRQHandler655360 -VDDIO2_IRQn655360 -VENDOR_MASK_REQUEST655360 -VENDOR_READ_REQUEST_TYPE655360 -VENDOR_REQUEST655360 -VENDOR_WRITE_REQUEST_TYPE655360 -VREFINT_CAL_ADDR655360 -WCHAR_MAX655360 -WCHAR_MIN655360 -WCHAR_WIDTH655360 -WEAK655360 -WEOF655360 -WINT_MAX655360 -WINT_MIN655360 -WINT_WIDTH655360 -WRITEDUMP131072(str)0 -WRITE_REG131072(REG,VAL)0 -WWDG655360 -WWDG_BASE655360 -WWDG_CFR_EWI655360 -WWDG_CFR_W655360 -WWDG_CFR_W0655360 -WWDG_CFR_W1655360 -WWDG_CFR_W2655360 -WWDG_CFR_W3655360 -WWDG_CFR_W4655360 -WWDG_CFR_W5655360 -WWDG_CFR_W6655360 -WWDG_CFR_WDGTB655360 -WWDG_CFR_WDGTB0655360 -WWDG_CFR_WDGTB1655360 -WWDG_CR_T655360 -WWDG_CR_T0655360 -WWDG_CR_T1655360 -WWDG_CR_T2655360 -WWDG_CR_T3655360 -WWDG_CR_T4655360 -WWDG_CR_T5655360 -WWDG_CR_T6655360 -WWDG_CR_WDGA655360 -WWDG_SR_EWIF655360 -_ATFILE_SOURCE655360 -_BITS_FLOATN_COMMON_H655360 -_BITS_FLOATN_H655360 -_BITS_STDINT_INTN_H655360 -_BITS_STDINT_UINTN_H655360 -_BITS_STRING_FORTIFIED_H655360 -_BITS_TYPESIZES_H655360 -_BITS_TYPES_H655360 -_BITS_TYPES_LOCALE_T_H655360 -_BITS_TYPES___LOCALE_T_H655360 -_BITS_WCHAR_H655360 -_BIT_SHIFT131072(IRQn)0 -_BSD_SIZE_T_655360 -_BSD_SIZE_T_DEFINED_655360 -_BSD_WCHAR_T_655360 -_DEFAULT_SOURCE655360 -_FEATURES_H655360 -_FORTIFY_SOURCE655360 -_Float12840960__float128 -_Float3240960float -_Float32x40960double -_Float6440960double -_Float64x40960long double -_GCC_SIZE_T655360 -_GCC_WCHAR_T655360 -_GCC_WRAP_STDINT_H655360 -_GNU_SOURCE655360 -_IO_FILE327680 -_IP_IDX131072(IRQn)0 -_ISOC11_SOURCE655360 -_ISOC95_SOURCE655360 -_ISOC99_SOURCE655360 -_LARGEFILE64_SOURCE655360 -_LARGEFILE_SOURCE655360 -_LP64655360 -_POSIX_C_SOURCE655360 -_POSIX_SOURCE655360 -_SHP_IDX131072(IRQn)0 -_SIZET_655360 -_SIZE_T655360 -_SIZE_T_655360 -_SIZE_T_DECLARED655360 -_SIZE_T_DEFINED655360 -_SIZE_T_DEFINED_655360 -_STDC_PREDEF_H655360 -_STDINT_H655360 -_STRINGS_H655360 -_STRING_H655360 -_SYS_CDEFS_H655360 -_SYS_SIZE_T_H655360 -_T_SIZE655360 -_T_SIZE_655360 -_T_WCHAR655360 -_T_WCHAR_655360 -_USB_STRING_131072(name,str)0 -_WCHAR_H655360 -_WCHAR_T655360 -_WCHAR_T_655360 -_WCHAR_T_DECLARED655360 -_WCHAR_T_DEFINED655360 -_WCHAR_T_DEFINED_655360 -_WCHAR_T_H655360 -_WINT_T655360 -_XOPEN_SOURCE655360 -_XOPEN_SOURCE_EXTENDED655360 -__ASM655360 -__ASMNAME131072(cname)0 -__ASMNAME2131072(prefix,cname)0 -__ATOMIC_ACQUIRE655360 -__ATOMIC_ACQ_REL655360 -__ATOMIC_CONSUME655360 -__ATOMIC_HLE_ACQUIRE655360 -__ATOMIC_HLE_RELEASE655360 -__ATOMIC_RELAXED655360 -__ATOMIC_RELEASE655360 -__ATOMIC_SEQ_CST655360 -__BEGIN_DECLS655360 -__BIGGEST_ALIGNMENT__655360 -__BKPT131072(value)0 -__BLKCNT64_T_TYPE655360 -__BLKCNT_T_TYPE655360 -__BLKSIZE_T_TYPE655360 -__BYTE_ORDER__655360 -__CAN_H__655360 -__CFLOAT128655360 -__CFLOAT32655360 -__CFLOAT32X655360 -__CFLOAT64655360 -__CFLOAT64X655360 -__CHAR16_TYPE__655360 -__CHAR32_TYPE__655360 -__CHAR_BIT__655360 -__CLOCKID_T_TYPE655360 -__CLOCK_T_TYPE655360 -__CM0_CMSIS_VERSION655360 -__CM0_CMSIS_VERSION_MAIN655360 -__CM0_CMSIS_VERSION_SUB655360 -__CM0_REV655360 -__CMSIS_GCC_OUT_REG131072(r)0 -__CMSIS_GCC_USE_REG131072(r)0 -__CONCAT131072(x,y)0 -__CORE_CM0_H_DEPENDANT655360 -__CORE_CM0_H_GENERIC655360 -__CORE_CMFUNC_H655360 -__CORE_CMINSTR_H655360 -__CORRECT_ISO_CPP_STRINGS_H_PROTO655360 -__CORRECT_ISO_CPP_STRING_H_PROTO655360 -__CORRECT_ISO_CPP_WCHAR_H_PROTO655360 -__CORTEX_M655360 -__CPU_MASK_TYPE655360 -__DADDR_T_TYPE655360 -__DBL_DECIMAL_DIG__655360 -__DBL_DENORM_MIN__655360 -__DBL_DIG__655360 -__DBL_EPSILON__655360 -__DBL_HAS_DENORM__655360 -__DBL_HAS_INFINITY__655360 -__DBL_HAS_QUIET_NAN__655360 -__DBL_MANT_DIG__655360 -__DBL_MAX_10_EXP__655360 -__DBL_MAX_EXP__655360 -__DBL_MAX__655360 -__DBL_MIN_10_EXP__655360 -__DBL_MIN_EXP__655360 -__DBL_MIN__655360 -__DEC128_EPSILON__655360 -__DEC128_MANT_DIG__655360 -__DEC128_MAX_EXP__655360 -__DEC128_MAX__655360 -__DEC128_MIN_EXP__655360 -__DEC128_MIN__655360 -__DEC128_SUBNORMAL_MIN__655360 -__DEC32_EPSILON__655360 -__DEC32_MANT_DIG__655360 -__DEC32_MAX_EXP__655360 -__DEC32_MAX__655360 -__DEC32_MIN_EXP__655360 -__DEC32_MIN__655360 -__DEC32_SUBNORMAL_MIN__655360 -__DEC64_EPSILON__655360 -__DEC64_MANT_DIG__655360 -__DEC64_MAX_EXP__655360 -__DEC64_MAX__655360 -__DEC64_MIN_EXP__655360 -__DEC64_MIN__655360 -__DEC64_SUBNORMAL_MIN__655360 -__DECIMAL_BID_FORMAT__655360 -__DECIMAL_DIG__655360 -__DEC_EVAL_METHOD__655360 -__DEPRECATED655360 -__DEV_T_TYPE655360 -__ELF__655360 -__END_DECLS655360 -__EXCEPTIONS655360 -__FD_SETSIZE655360 -__FILE40960_IO_FILE -__FILE_defined655360 -__FINITE_MATH_ONLY__655360 -__FLOAT_WORD_ORDER__655360 -__FLT128_DECIMAL_DIG__655360 -__FLT128_DENORM_MIN__655360 -__FLT128_DIG__655360 -__FLT128_EPSILON__655360 -__FLT128_HAS_DENORM__655360 -__FLT128_HAS_INFINITY__655360 -__FLT128_HAS_QUIET_NAN__655360 -__FLT128_MANT_DIG__655360 -__FLT128_MAX_10_EXP__655360 -__FLT128_MAX_EXP__655360 -__FLT128_MAX__655360 -__FLT128_MIN_10_EXP__655360 -__FLT128_MIN_EXP__655360 -__FLT128_MIN__655360 -__FLT32X_DECIMAL_DIG__655360 -__FLT32X_DENORM_MIN__655360 -__FLT32X_DIG__655360 -__FLT32X_EPSILON__655360 -__FLT32X_HAS_DENORM__655360 -__FLT32X_HAS_INFINITY__655360 -__FLT32X_HAS_QUIET_NAN__655360 -__FLT32X_MANT_DIG__655360 -__FLT32X_MAX_10_EXP__655360 -__FLT32X_MAX_EXP__655360 -__FLT32X_MAX__655360 -__FLT32X_MIN_10_EXP__655360 -__FLT32X_MIN_EXP__655360 -__FLT32X_MIN__655360 -__FLT32_DECIMAL_DIG__655360 -__FLT32_DENORM_MIN__655360 -__FLT32_DIG__655360 -__FLT32_EPSILON__655360 -__FLT32_HAS_DENORM__655360 -__FLT32_HAS_INFINITY__655360 -__FLT32_HAS_QUIET_NAN__655360 -__FLT32_MANT_DIG__655360 -__FLT32_MAX_10_EXP__655360 -__FLT32_MAX_EXP__655360 -__FLT32_MAX__655360 -__FLT32_MIN_10_EXP__655360 -__FLT32_MIN_EXP__655360 -__FLT32_MIN__655360 -__FLT64X_DECIMAL_DIG__655360 -__FLT64X_DENORM_MIN__655360 -__FLT64X_DIG__655360 -__FLT64X_EPSILON__655360 -__FLT64X_HAS_DENORM__655360 -__FLT64X_HAS_INFINITY__655360 -__FLT64X_HAS_QUIET_NAN__655360 -__FLT64X_MANT_DIG__655360 -__FLT64X_MAX_10_EXP__655360 -__FLT64X_MAX_EXP__655360 -__FLT64X_MAX__655360 -__FLT64X_MIN_10_EXP__655360 -__FLT64X_MIN_EXP__655360 -__FLT64X_MIN__655360 -__FLT64_DECIMAL_DIG__655360 -__FLT64_DENORM_MIN__655360 -__FLT64_DIG__655360 -__FLT64_EPSILON__655360 -__FLT64_HAS_DENORM__655360 -__FLT64_HAS_INFINITY__655360 -__FLT64_HAS_QUIET_NAN__655360 -__FLT64_MANT_DIG__655360 -__FLT64_MAX_10_EXP__655360 -__FLT64_MAX_EXP__655360 -__FLT64_MAX__655360 -__FLT64_MIN_10_EXP__655360 -__FLT64_MIN_EXP__655360 -__FLT64_MIN__655360 -__FLT_DECIMAL_DIG__655360 -__FLT_DENORM_MIN__655360 -__FLT_DIG__655360 -__FLT_EPSILON__655360 -__FLT_EVAL_METHOD_TS_18661_3__655360 -__FLT_EVAL_METHOD__655360 -__FLT_HAS_DENORM__655360 -__FLT_HAS_INFINITY__655360 -__FLT_HAS_QUIET_NAN__655360 -__FLT_MANT_DIG__655360 -__FLT_MAX_10_EXP__655360 -__FLT_MAX_EXP__655360 -__FLT_MAX__655360 -__FLT_MIN_10_EXP__655360 -__FLT_MIN_EXP__655360 -__FLT_MIN__655360 -__FLT_RADIX__655360 -__FPU_USED655360 -__FSBLKCNT64_T_TYPE655360 -__FSBLKCNT_T_TYPE655360 -__FSFILCNT64_T_TYPE655360 -__FSFILCNT_T_TYPE655360 -__FSID_T_TYPE655360 -__FSWORD_T_TYPE655360 -__FXSR__655360 -__GCC_ASM_FLAG_OUTPUTS__655360 -__GCC_ATOMIC_BOOL_LOCK_FREE655360 -__GCC_ATOMIC_CHAR16_T_LOCK_FREE655360 -__GCC_ATOMIC_CHAR32_T_LOCK_FREE655360 -__GCC_ATOMIC_CHAR_LOCK_FREE655360 -__GCC_ATOMIC_INT_LOCK_FREE655360 -__GCC_ATOMIC_LLONG_LOCK_FREE655360 -__GCC_ATOMIC_LONG_LOCK_FREE655360 -__GCC_ATOMIC_POINTER_LOCK_FREE655360 -__GCC_ATOMIC_SHORT_LOCK_FREE655360 -__GCC_ATOMIC_TEST_AND_SET_TRUEVAL655360 -__GCC_ATOMIC_WCHAR_T_LOCK_FREE655360 -__GCC_HAVE_DWARF2_CFI_ASM655360 -__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1655360 -__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2655360 -__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4655360 -__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8655360 -__GCC_IEC_559655360 -__GCC_IEC_559_COMPLEX655360 -__GID_T_TYPE655360 -__GLIBCXX_BITSIZE_INT_N_0655360 -__GLIBCXX_TYPE_INT_N_0655360 -__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION655360 -__GLIBC_MINOR__655360 -__GLIBC_PREREQ131072(maj,min)0 -__GLIBC_USE131072(F)0 -__GLIBC_USE_DEPRECATED_GETS655360 -__GLIBC_USE_IEC_60559_BFP_EXT655360 -__GLIBC_USE_IEC_60559_FUNCS_EXT655360 -__GLIBC_USE_IEC_60559_TYPES_EXT655360 -__GLIBC_USE_LIB_EXT2655360 -__GLIBC__655360 -__GNUC_MINOR__655360 -__GNUC_PATCHLEVEL__655360 -__GNUC_PREREQ131072(maj,min)0 -__GNUC_STDC_INLINE__655360 -__GNUC_VA_LIST655360 -__GNUC__655360 -__GNUG__655360 -__GNU_LIBRARY__655360 -__GXX_ABI_VERSION655360 -__GXX_EXPERIMENTAL_CXX0X__655360 -__GXX_RTTI655360 -__GXX_WEAK__655360 -__HARDWARE_H__655360 -__HAVE_DISTINCT_FLOAT128655360 -__HAVE_DISTINCT_FLOAT128X655360 -__HAVE_DISTINCT_FLOAT16655360 -__HAVE_DISTINCT_FLOAT32655360 -__HAVE_DISTINCT_FLOAT32X655360 -__HAVE_DISTINCT_FLOAT64655360 -__HAVE_DISTINCT_FLOAT64X655360 -__HAVE_FLOAT128655360 -__HAVE_FLOAT128X655360 -__HAVE_FLOAT16655360 -__HAVE_FLOAT32655360 -__HAVE_FLOAT32X655360 -__HAVE_FLOAT64655360 -__HAVE_FLOAT64X655360 -__HAVE_FLOAT64X_LONG_DOUBLE655360 -__HAVE_FLOATN_NOT_TYPEDEF655360 -__HAVE_GENERIC_SELECTION655360 -__I655360 -__ID_T_TYPE655360 -__INLINE655360 -__INO64_T_TYPE655360 -__INO_T_MATCHES_INO64_T655360 -__INO_T_TYPE655360 -__INT16_C131072(c)0 -__INT16_MAX__655360 -__INT16_TYPE__655360 -__INT32_C131072(c)0 -__INT32_MAX__655360 -__INT32_TYPE__655360 -__INT64_C131072(c)0 -__INT64_MAX__655360 -__INT64_TYPE__655360 -__INT8_C131072(c)0 -__INT8_MAX__655360 -__INT8_TYPE__655360 -__INTMAX_C131072(c)0 -__INTMAX_MAX__655360 -__INTMAX_TYPE__655360 -__INTMAX_WIDTH__655360 -__INTPTR_MAX__655360 -__INTPTR_TYPE__655360 -__INTPTR_WIDTH__655360 -__INT_FAST16_MAX__655360 -__INT_FAST16_TYPE__655360 -__INT_FAST16_WIDTH__655360 -__INT_FAST32_MAX__655360 -__INT_FAST32_TYPE__655360 -__INT_FAST32_WIDTH__655360 -__INT_FAST64_MAX__655360 -__INT_FAST64_TYPE__655360 -__INT_FAST64_WIDTH__655360 -__INT_FAST8_MAX__655360 -__INT_FAST8_TYPE__655360 -__INT_FAST8_WIDTH__655360 -__INT_LEAST16_MAX__655360 -__INT_LEAST16_TYPE__655360 -__INT_LEAST16_WIDTH__655360 -__INT_LEAST32_MAX__655360 -__INT_LEAST32_TYPE__655360 -__INT_LEAST32_WIDTH__655360 -__INT_LEAST64_MAX__655360 -__INT_LEAST64_TYPE__655360 -__INT_LEAST64_WIDTH__655360 -__INT_LEAST8_MAX__655360 -__INT_LEAST8_TYPE__655360 -__INT_LEAST8_WIDTH__655360 -__INT_MAX__655360 -__INT_WCHAR_T_H655360 -__INT_WIDTH__655360 -__IO655360 -__KERNEL_STRICT_NAMES655360 -__KEY_T_TYPE655360 -__LDBL_DECIMAL_DIG__655360 -__LDBL_DENORM_MIN__655360 -__LDBL_DIG__655360 -__LDBL_EPSILON__655360 -__LDBL_HAS_DENORM__655360 -__LDBL_HAS_INFINITY__655360 -__LDBL_HAS_QUIET_NAN__655360 -__LDBL_MANT_DIG__655360 -__LDBL_MAX_10_EXP__655360 -__LDBL_MAX_EXP__655360 -__LDBL_MAX__655360 -__LDBL_MIN_10_EXP__655360 -__LDBL_MIN_EXP__655360 -__LDBL_MIN__655360 -__LDBL_REDIR131072(name,proto)0 -__LDBL_REDIR1131072(name,proto,alias)0 -__LDBL_REDIR1_NTH131072(name,proto,alias)0 -__LDBL_REDIR_DECL131072(name)0 -__LDBL_REDIR_NTH131072(name,proto)0 -__LEAF655360 -__LEAF_ATTR655360 -__LONG_LONG_MAX__655360 -__LONG_LONG_WIDTH__655360 -__LONG_MAX__655360 -__LONG_WIDTH__655360 -__LP64__655360 -__MMX__655360 -__MODE_T_TYPE655360 -__MPU_PRESENT655360 -__NLINK_T_TYPE655360 -__NTH131072(fct)0 -__NTHNL131072(fct)0 -__NVIC_PRIO_BITS655360 -__O655360 -__OFF64_T_TYPE655360 -__OFF_T_MATCHES_OFF64_T655360 -__OFF_T_TYPE655360 -__OPTIMIZE__655360 -__ORDER_BIG_ENDIAN__655360 -__ORDER_LITTLE_ENDIAN__655360 -__ORDER_PDP_ENDIAN__655360 -__P655360 -__P131072(args)0 -__PIC__655360 -__PID_T_TYPE655360 -__PIE__655360 -__PMT655360 -__PMT131072(args)0 -__PRAGMA_REDEFINE_EXTNAME655360 -__PTRDIFF_MAX__655360 -__PTRDIFF_TYPE__655360 -__PTRDIFF_WIDTH__655360 -__REDIRECT131072(name,proto,alias)0 -__REDIRECT_LDBL131072(name,proto,alias)0 -__REDIRECT_NTH131072(name,proto,alias)0 -__REDIRECT_NTHNL131072(name,proto,alias)0 -__REDIRECT_NTH_LDBL131072(name,proto,alias)0 -__REGISTER_PREFIX__655360 -__RLIM64_T_TYPE655360 -__RLIM_T_MATCHES_RLIM64_T655360 -__RLIM_T_TYPE655360 -__S16_TYPE655360 -__S32_TYPE655360 -__S64_TYPE655360 -__SCHAR_MAX__655360 -__SCHAR_WIDTH__655360 -__SEG_FS655360 -__SEG_GS655360 -__SHRT_MAX__655360 -__SHRT_WIDTH__655360 -__SIG_ATOMIC_MAX__655360 -__SIG_ATOMIC_MIN__655360 -__SIG_ATOMIC_TYPE__655360 -__SIG_ATOMIC_WIDTH__655360 -__SIZEOF_DOUBLE__655360 -__SIZEOF_FLOAT128__655360 -__SIZEOF_FLOAT80__655360 -__SIZEOF_FLOAT__655360 -__SIZEOF_INT128__655360 -__SIZEOF_INT__655360 -__SIZEOF_LONG_DOUBLE__655360 -__SIZEOF_LONG_LONG__655360 -__SIZEOF_LONG__655360 -__SIZEOF_POINTER__655360 -__SIZEOF_PTRDIFF_T__655360 -__SIZEOF_SHORT__655360 -__SIZEOF_SIZE_T__655360 -__SIZEOF_WCHAR_T__655360 -__SIZEOF_WINT_T__655360 -__SIZE_MAX__655360 -__SIZE_T655360 -__SIZE_TYPE__655360 -__SIZE_T__655360 -__SIZE_WIDTH__655360 -__SLONG32_TYPE655360 -__SLONGWORD_TYPE655360 -__SQUAD_TYPE655360 -__SSE2_MATH__655360 -__SSE2__655360 -__SSE_MATH__655360 -__SSE__655360 -__SSIZE_T_TYPE655360 -__SSP_STRONG__655360 -__STATIC_INLINE655360 -__STDC_CONSTANT_MACROS655360 -__STDC_HOSTED__655360 -__STDC_IEC_559_COMPLEX__655360 -__STDC_IEC_559__655360 -__STDC_ISO_10646__655360 -__STDC_LIMIT_MACROS655360 -__STDC_NO_THREADS__655360 -__STDC_UTF_16__655360 -__STDC_UTF_32__655360 -__STDC__655360 -__STD_TYPE655360 -__STM32F042x6_H655360 -__STM32F0_H__655360 -__STM32F0xx_CMSIS_DEVICE_VERSION655360 -__STM32F0xx_CMSIS_DEVICE_VERSION_MAIN655360 -__STM32F0xx_CMSIS_DEVICE_VERSION_RC655360 -__STM32F0xx_CMSIS_DEVICE_VERSION_SUB1655360 -__STM32F0xx_CMSIS_DEVICE_VERSION_SUB2655360 -__STM32F0xx_H655360 -__STRING131072(x)0 -__STRINGS_FORTIFIED655360 -__SUSECONDS_T_TYPE655360 -__SWORD_TYPE655360 -__SYSCALL_SLONG_TYPE655360 -__SYSCALL_ULONG_TYPE655360 -__SYSCALL_WORDSIZE655360 -__THROW655360 -__THROWNL655360 -__TIMER_T_TYPE655360 -__TIME_T_TYPE655360 -__U16_TYPE655360 -__U32_TYPE655360 -__U64_TYPE655360 -__UID_T_TYPE655360 -__UINT16_C131072(c)0 -__UINT16_MAX__655360 -__UINT16_TYPE__655360 -__UINT32_C131072(c)0 -__UINT32_MAX__655360 -__UINT32_TYPE__655360 -__UINT64_C131072(c)0 -__UINT64_MAX__655360 -__UINT64_TYPE__655360 -__UINT8_C131072(c)0 -__UINT8_MAX__655360 -__UINT8_TYPE__655360 -__UINTMAX_C131072(c)0 -__UINTMAX_MAX__655360 -__UINTMAX_TYPE__655360 -__UINTPTR_MAX__655360 -__UINTPTR_TYPE__655360 -__UINT_FAST16_MAX__655360 -__UINT_FAST16_TYPE__655360 -__UINT_FAST32_MAX__655360 -__UINT_FAST32_TYPE__655360 -__UINT_FAST64_MAX__655360 -__UINT_FAST64_TYPE__655360 -__UINT_FAST8_MAX__655360 -__UINT_FAST8_TYPE__655360 -__UINT_LEAST16_MAX__655360 -__UINT_LEAST16_TYPE__655360 -__UINT_LEAST32_MAX__655360 -__UINT_LEAST32_TYPE__655360 -__UINT_LEAST64_MAX__655360 -__UINT_LEAST64_TYPE__655360 -__UINT_LEAST8_MAX__655360 -__UINT_LEAST8_TYPE__655360 -__ULONG32_TYPE655360 -__ULONGWORD_TYPE655360 -__UQUAD_TYPE655360 -__USART_H__655360 -__USB_DEFS_H__655360 -__USB_H__655360 -__USB_LIB_H__655360 -__USECONDS_T_TYPE655360 -__USER_LABEL_PREFIX__655360 -__USE_ATFILE655360 -__USE_EXTERN_INLINES655360 -__USE_FILE_OFFSET64655360 -__USE_FORTIFY_LEVEL655360 -__USE_GNU655360 -__USE_ISOC11655360 -__USE_ISOC95655360 -__USE_ISOC99655360 -__USE_ISOCXX11655360 -__USE_LARGEFILE655360 -__USE_LARGEFILE64655360 -__USE_MISC655360 -__USE_POSIX655360 -__USE_POSIX199309655360 -__USE_POSIX199506655360 -__USE_POSIX2655360 -__USE_UNIX98655360 -__USE_XOPEN655360 -__USE_XOPEN2K655360 -__USE_XOPEN2K8655360 -__USE_XOPEN2K8XSI655360 -__USE_XOPEN2KXSI655360 -__USE_XOPEN_EXTENDED655360 -__UWORD_TYPE655360 -__VERSION__655360 -__Vendor_SysTickConfig655360 -__WCHAR_MAX655360 -__WCHAR_MAX__655360 -__WCHAR_MB_LEN_MAX655360 -__WCHAR_MIN655360 -__WCHAR_MIN__655360 -__WCHAR_T655360 -__WCHAR_TYPE__655360 -__WCHAR_T__655360 -__WCHAR_WIDTH__655360 -__WINT_MAX__655360 -__WINT_MIN__655360 -__WINT_TYPE__655360 -__WINT_WIDTH__655360 -__WORDSIZE655360 -__WORDSIZE_TIME64_COMPAT32655360 -____FILE_defined655360 -____mbstate_t_defined655360 -___int_size_t_h655360 -___int_wchar_t_h655360 -__always_inline655360 -__amd64655360 -__amd64__655360 -__attribute_alloc_size__131072(params)0 -__attribute_artificial__655360 -__attribute_const__655360 -__attribute_deprecated__655360 -__attribute_deprecated_msg__131072(msg)0 -__attribute_format_arg__131072(x)0 -__attribute_format_strfmon__131072(a,b)0 -__attribute_malloc__655360 -__attribute_noinline__655360 -__attribute_nonstring__655360 -__attribute_pure__655360 -__attribute_used__655360 -__attribute_warn_unused_result__655360 -__bos131072(ptr)0 -__bos0131072(ptr)0 -__cfloat12840960_Complex float -__code_model_small__655360 -__count64anon_struct_50int -__cplusplus655360 -__cpp_aggregate_nsdmi655360 -__cpp_alias_templates655360 -__cpp_attributes655360 -__cpp_binary_literals655360 -__cpp_constexpr655360 -__cpp_decltype655360 -__cpp_decltype_auto655360 -__cpp_delegating_constructors655360 -__cpp_digit_separators655360 -__cpp_exceptions655360 -__cpp_generic_lambdas655360 -__cpp_hex_float655360 -__cpp_inheriting_constructors655360 -__cpp_init_captures655360 -__cpp_initializer_lists655360 -__cpp_lambdas655360 -__cpp_nsdmi655360 -__cpp_range_based_for655360 -__cpp_raw_strings655360 -__cpp_ref_qualifiers655360 -__cpp_return_type_deduction655360 -__cpp_rtti655360 -__cpp_runtime_arrays655360 -__cpp_rvalue_reference655360 -__cpp_rvalue_references655360 -__cpp_sized_deallocation655360 -__cpp_static_assert655360 -__cpp_threadsafe_static_init655360 -__cpp_unicode_characters655360 -__cpp_unicode_literals655360 -__cpp_user_defined_literals655360 -__cpp_variable_templates655360 -__cpp_variadic_templates655360 -__ctype_b64__locale_struct0const unsigned short int * -__ctype_tolower64__locale_struct0const int * -__ctype_toupper64__locale_struct0const int * -__ep_t20480 -__errordecl131072(name,msg)0 -__extern_always_inline655360 -__extern_inline655360 -__f128131072(x)0 -__f32131072(x)0 -__f32x131072(x)0 -__f64131072(x)0 -__f64x131072(x)0 -__flexarr655360 -__fortify_function655360 -__glibc_c99_flexarr_available655360 -__glibc_clang_has_extension131072(ext)0 -__glibc_clang_prereq131072(maj,min)0 -__glibc_likely131072(cond)0 -__glibc_macro_warning131072(message)0 -__glibc_macro_warning1131072(message)0 -__glibc_unlikely131072(cond)0 -__gnu_linux__655360 -__gnuc_va_list40960__builtin_va_list -__has_include131072(STR)0 -__has_include_next131072(STR)0 -__intptr_t_defined655360 -__k8655360 -__k8__655360 -__linux655360 -__linux__655360 -__locale_struct20480 -__locale_t40960__locale_struct -__locales64__locale_struct0__locale_data -__mbstate_t40960anon_struct_5 -__mbstate_t_defined655360 -__names64__locale_struct0const char * -__need_NULL655360 -__need___va_list655360 -__need_size_t655360 -__need_wchar_t655360 -__nonnull131072(params)0 -__pic__655360 -__pie__655360 -__ptr_t655360 -__restrict_arr655360 -__size_t655360 -__size_t__655360 -__stub___compat_bdflush655360 -__stub_chflags655360 -__stub_fattach655360 -__stub_fchflags655360 -__stub_fdetach655360 -__stub_getmsg655360 -__stub_gtty655360 -__stub_lchmod655360 -__stub_putmsg655360 -__stub_revoke655360 -__stub_setlogin655360 -__stub_sigreturn655360 -__stub_sstk655360 -__stub_stty655360 -__thumb2__655360 -__unix655360 -__unix__655360 -__va_arg_pack131072()0 -__va_arg_pack_len131072()0 -__value64anon_struct_50anon_union_6 -__warnattr131072(msg)0 -__warndecl131072(name,msg)0 -__wch64anon_struct_5::anon_union_60unsigned int -__wchar_t__655360 -__wchb64anon_struct_5::anon_union_60char -__wint_t_defined655360 -__wur655360 -__x86_64655360 -__x86_64__655360 -anon_enum_420 -anon_struct_020480 -anon_struct_120480 -anon_struct_1020480 -anon_struct_220480 -anon_struct_320480 -anon_struct_520480 -anon_struct_720480 -anon_struct_820480 -anon_struct_920480 -anon_union_68192anon_struct_50 -bCharFormat64anon_struct_90uint8_t -bDataBits64anon_struct_90uint8_t -bDescriptorType64USB_StringManufacturingDescriptor0uint8_t -bDescriptorType64USB_StringProdDescriptor0uint8_t -bDescriptorType64USB_StringSerialDescriptor0uint8_t -bLength64USB_StringManufacturingDescriptor0uint8_t -bLength64USB_StringProdDescriptor0uint8_t -bLength64USB_StringSerialDescriptor0uint8_t -bNotificationType64anon_struct_100uint8_t -bParityType64anon_struct_90uint8_t -bRequest64anon_struct_70uint8_t -bString64USB_StringManufacturingDescriptor0wchar_t -bString64USB_StringProdDescriptor0wchar_t -bString64USB_StringSerialDescriptor0wchar_t -bmRequestType64anon_struct_100uint8_t -bmRequestType64anon_struct_70uint8_t -break_handler16()0void -break_handler1024()0void -buffer163840uint8_t -bufovr163840int -bufovr327680int -can_proc16()0void -can_proc1024()0void -can_process_fifo16(uint8_t fifo_num)0void -can_process_fifo1024(uint8_t fifo_num)0void -can_send16(uint8_t *msg, uint8_t len, uint16_t target_id)0CAN_status -can_send_broadcast16()0void -can_send_broadcast1024()0void -can_send_dummy16()0void -can_send_dummy1024()0void -can_status163840CAN_status -cec_can_isr16()0void -clstate_handler16(__attribute__((unused)) uint16_t val)0void -clstate_handler1024(uint16_t val)0void -config_pack_t40960anon_struct_7 -data64anon_struct_30uint8_t -dlen163840int -dma1_channel2_3_isr16()0void -dwDTERate64anon_struct_90uint32_t -endpoints163840ep_t -ep0databuf163840uint8_t -ep0dbuflen163840uint8_t -ep_t40960__ep_t -first_free_idx163840uint8_t -first_nonfree_idx163840int8_t -func1024()__ep_t0uint16_t -getCANID16()0uint16_t -getCANID1024()0uint16_t -getLineCoding16()0usb_LineCoding -getLineCoding1024()0usb_LineCoding -gpio_setup16(void)0void -gpio_setup1024(void)0void -hexdump16(uint8_t *arr, uint16_t len)0void -hexdump1024(uint8_t *arr, uint16_t len)0void -idatalen163840volatile int -iwdg_setup16()0void -last_err_code163840uint32_t -len163840uint8_t -length64anon_struct_30uint8_t -lineCoding163840usb_LineCoding -linecoding_handler16(__attribute__((unused)) usb_LineCoding *lc)0void -linecoding_handler1024(usb_LineCoding *lc)0void -linerdy163840volatile int -linerdy327680volatile int -linux655360 -locale_t40960__locale_t -main16(void)0int -mbstate_t40960__mbstate_t -messages163840CAN_message -newline16()0void -newline1024()0void -nop131072()0 -odatalen163840volatile int -pin_clear131072(gpioport,gpios)0 -pin_read131072(gpioport,gpios)0 -pin_set131072(gpioport,gpios)0 -pin_toggle131072(gpioport,gpios)0 -pin_write131072(gpioport,gpios)0 -printu16(uint32_t val)0void -printu1024(uint32_t val)0void -printuhex16(uint32_t val)0void -printuhex1024(uint32_t val)0void -rbuf163840char -rbufno163840int -rcvflag163840uint8_t -readCANID16()0void -readCANID1024()0void -recvdata163840char * -rx_buf64__ep_t0uint8_t * -rx_cnt64__ep_t0 -rx_flag64__ep_t0 -setlinecoding163840uint8_t -setlinecoding327680uint8_t -setup_flag64__ep_t0 -setup_packet163840config_pack_t -size_t40960long unsigned int -status64__ep_t0uint16_t -strdupa131072(s)0 -strndupa131072(s,n)0 -sys_tick_handler16(void)0void -sysreset16(void)0inline void -tbuf163840char -tbufno163840int -transmit_tbuf16()0void -transmit_tbuf1024()0void -tx_buf64__ep_t0uint16_t * -tx_flag64__ep_t0 -txrdy163840int -txrdy327680int -unix655360 -usart1_isr16()0void -usart_getline16(char **line)0int -usart_getline1024(char **line)0int -usart_putchar16(const char ch)0void -usart_putchar1024(const char ch)0void -usart_send16(const char *str)0void -usart_send1024(const char *str)0void -usart_setup16()0void -usart_setup1024()0void -usartovr131072()0 -usartrx131072()0 -usb_LineCoding40960anon_struct_9 -usb_cdc_notification40960anon_struct_10 -usb_dev_t40960anon_struct_8 -usb_isr16()0void -usb_proc16()0void -usb_proc1024()0void -vendor_handler16(config_pack_t *packet)0void -vendor_handler1024(config_pack_t *packet)0void -wIndex64anon_struct_100uint16_t -wIndex64anon_struct_70uint16_t -wLength64anon_struct_100uint16_t -wLength64anon_struct_70uint16_t -wValue64anon_struct_100uint16_t -wValue64anon_struct_70uint16_t -wint_t40960unsigned int