oled added, PWM and so on configured, unfortunately not working so far, target not longer found by stlink
This commit is contained in:
parent
400549e8bb
commit
2ddf55c73b
@ -19,6 +19,9 @@ my_src/led.o: ../my_src/led.c ../system/include/stm32f1xx/stm32f1xx_hal.h \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h \
|
||||||
/home/wn/workspace-stm32/newcar/hottislib/PontCoopScheduler.h
|
/home/wn/workspace-stm32/newcar/hottislib/PontCoopScheduler.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
@ -65,4 +68,10 @@ my_src/led.o: ../my_src/led.c ../system/include/stm32f1xx/stm32f1xx_hal.h \
|
|||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
|
||||||
/home/wn/workspace-stm32/newcar/hottislib/PontCoopScheduler.h:
|
/home/wn/workspace-stm32/newcar/hottislib/PontCoopScheduler.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,11 @@ my_src/main2.o: ../my_src/main2.c \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h ../my_src/led.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h ../my_src/led.h \
|
||||||
|
../my_src/oled.h
|
||||||
|
|
||||||
/home/wn/workspace-stm32/newcar/hottislib/PontCoopScheduler.h:
|
/home/wn/workspace-stm32/newcar/hottislib/PontCoopScheduler.h:
|
||||||
|
|
||||||
@ -68,4 +72,12 @@ my_src/main2.o: ../my_src/main2.c \
|
|||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
|
||||||
../my_src/led.h:
|
../my_src/led.h:
|
||||||
|
|
||||||
|
../my_src/oled.h:
|
||||||
|
Binary file not shown.
79
Debug/my_src/oled.d
Normal file
79
Debug/my_src/oled.d
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
my_src/oled.o: ../my_src/oled.c ../my_src/oled.h ../my_src/oled-fonts.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal.h \
|
||||||
|
../include/stm32f1xx_hal_conf.h ../include/mxconstants.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_def.h \
|
||||||
|
../system/include/cmsis/device/stm32f1xx.h \
|
||||||
|
../system/include/cmsis/device/stm32f103xe.h \
|
||||||
|
../system/include/cmsis/core_cm3.h \
|
||||||
|
../system/include/cmsis/core_cmInstr.h \
|
||||||
|
../system/include/cmsis/cmsis_gcc.h \
|
||||||
|
../system/include/cmsis/core_cmFunc.h \
|
||||||
|
../system/include/cmsis/device/system_stm32f1xx.h \
|
||||||
|
../system/include/stm32f1xx/Legacy/stm32_hal_legacy.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
|
../my_src/oled.h:
|
||||||
|
|
||||||
|
../my_src/oled-fonts.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
|
../include/stm32f1xx_hal_conf.h:
|
||||||
|
|
||||||
|
../include/mxconstants.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_def.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/stm32f1xx.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/stm32f103xe.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cm3.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cmInstr.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/cmsis_gcc.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cmFunc.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/system_stm32f1xx.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/Legacy/stm32_hal_legacy.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
BIN
Debug/my_src/oled.o
Normal file
BIN
Debug/my_src/oled.o
Normal file
Binary file not shown.
@ -5,15 +5,18 @@
|
|||||||
# Add inputs and outputs from these tool invocations to the build variables
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
C_SRCS += \
|
C_SRCS += \
|
||||||
../my_src/led.c \
|
../my_src/led.c \
|
||||||
../my_src/main2.c
|
../my_src/main2.c \
|
||||||
|
../my_src/oled.c
|
||||||
|
|
||||||
OBJS += \
|
OBJS += \
|
||||||
./my_src/led.o \
|
./my_src/led.o \
|
||||||
./my_src/main2.o
|
./my_src/main2.o \
|
||||||
|
./my_src/oled.o
|
||||||
|
|
||||||
C_DEPS += \
|
C_DEPS += \
|
||||||
./my_src/led.d \
|
./my_src/led.d \
|
||||||
./my_src/main2.d
|
./my_src/main2.d \
|
||||||
|
./my_src/oled.d
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
BIN
Debug/newcar.elf
BIN
Debug/newcar.elf
Binary file not shown.
877
Debug/newcar.hex
877
Debug/newcar.hex
File diff suppressed because it is too large
Load Diff
1935
Debug/newcar.map
1935
Debug/newcar.map
File diff suppressed because it is too large
Load Diff
@ -19,6 +19,9 @@ src/main.o: ../src/main.c ../system/include/stm32f1xx/stm32f1xx_hal.h \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h \
|
||||||
/home/wn/workspace-stm32/newcar/my_src/main2.h
|
/home/wn/workspace-stm32/newcar/my_src/main2.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
@ -65,4 +68,10 @@ src/main.o: ../src/main.c ../system/include/stm32f1xx/stm32f1xx_hal.h \
|
|||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
|
||||||
/home/wn/workspace-stm32/newcar/my_src/main2.h:
|
/home/wn/workspace-stm32/newcar/my_src/main2.h:
|
||||||
|
BIN
Debug/src/main.o
BIN
Debug/src/main.o
Binary file not shown.
@ -19,7 +19,10 @@ src/stm32f1xx_hal_msp.o: ../src/stm32f1xx_hal_msp.c \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -64,3 +67,9 @@ src/stm32f1xx_hal_msp.o: ../src/stm32f1xx_hal_msp.c \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,6 +20,9 @@ src/stm32f1xx_it.o: ../src/stm32f1xx_it.c \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h \
|
||||||
../include/stm32f1xx_it.h
|
../include/stm32f1xx_it.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
@ -66,4 +69,10 @@ src/stm32f1xx_it.o: ../src/stm32f1xx_it.c \
|
|||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
|
||||||
../include/stm32f1xx_it.h:
|
../include/stm32f1xx_it.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_cortex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_cortex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_dma.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_dma.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_flash.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_flash.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_flash_ex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_flash_ex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_gpio.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_gpio.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_gpio_ex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_gpio_ex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_pwr.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_pwr.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_rcc.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_rcc.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_rcc_ex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_rcc_ex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
76
Debug/system/src/stm32f1xx/stm32f1xx_hal_spi.d
Normal file
76
Debug/system/src/stm32f1xx/stm32f1xx_hal_spi.d
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
system/src/stm32f1xx/stm32f1xx_hal_spi.o: \
|
||||||
|
../system/src/stm32f1xx/stm32f1xx_hal_spi.c \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal.h \
|
||||||
|
../include/stm32f1xx_hal_conf.h ../include/mxconstants.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_def.h \
|
||||||
|
../system/include/cmsis/device/stm32f1xx.h \
|
||||||
|
../system/include/cmsis/device/stm32f103xe.h \
|
||||||
|
../system/include/cmsis/core_cm3.h \
|
||||||
|
../system/include/cmsis/core_cmInstr.h \
|
||||||
|
../system/include/cmsis/cmsis_gcc.h \
|
||||||
|
../system/include/cmsis/core_cmFunc.h \
|
||||||
|
../system/include/cmsis/device/system_stm32f1xx.h \
|
||||||
|
../system/include/stm32f1xx/Legacy/stm32_hal_legacy.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
|
../include/stm32f1xx_hal_conf.h:
|
||||||
|
|
||||||
|
../include/mxconstants.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_def.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/stm32f1xx.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/stm32f103xe.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cm3.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cmInstr.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/cmsis_gcc.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cmFunc.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/system_stm32f1xx.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/Legacy/stm32_hal_legacy.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
BIN
Debug/system/src/stm32f1xx/stm32f1xx_hal_spi.o
Normal file
BIN
Debug/system/src/stm32f1xx/stm32f1xx_hal_spi.o
Normal file
Binary file not shown.
76
Debug/system/src/stm32f1xx/stm32f1xx_hal_spi_ex.d
Normal file
76
Debug/system/src/stm32f1xx/stm32f1xx_hal_spi_ex.d
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
system/src/stm32f1xx/stm32f1xx_hal_spi_ex.o: \
|
||||||
|
../system/src/stm32f1xx/stm32f1xx_hal_spi_ex.c \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal.h \
|
||||||
|
../include/stm32f1xx_hal_conf.h ../include/mxconstants.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_def.h \
|
||||||
|
../system/include/cmsis/device/stm32f1xx.h \
|
||||||
|
../system/include/cmsis/device/stm32f103xe.h \
|
||||||
|
../system/include/cmsis/core_cm3.h \
|
||||||
|
../system/include/cmsis/core_cmInstr.h \
|
||||||
|
../system/include/cmsis/cmsis_gcc.h \
|
||||||
|
../system/include/cmsis/core_cmFunc.h \
|
||||||
|
../system/include/cmsis/device/system_stm32f1xx.h \
|
||||||
|
../system/include/stm32f1xx/Legacy/stm32_hal_legacy.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
|
../include/stm32f1xx_hal_conf.h:
|
||||||
|
|
||||||
|
../include/mxconstants.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_def.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/stm32f1xx.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/stm32f103xe.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cm3.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cmInstr.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/cmsis_gcc.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/core_cmFunc.h:
|
||||||
|
|
||||||
|
../system/include/cmsis/device/system_stm32f1xx.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/Legacy/stm32_hal_legacy.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_rcc_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_gpio_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_dma_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
BIN
Debug/system/src/stm32f1xx/stm32f1xx_hal_spi_ex.o
Normal file
BIN
Debug/system/src/stm32f1xx/stm32f1xx_hal_spi_ex.o
Normal file
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_tim.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_tim.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -20,7 +20,10 @@ system/src/stm32f1xx/stm32f1xx_hal_tim_ex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_cortex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h \
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h \
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
../system/include/stm32f1xx/stm32f1xx_hal.h:
|
||||||
|
|
||||||
@ -65,3 +68,9 @@ system/src/stm32f1xx/stm32f1xx_hal_tim_ex.o: \
|
|||||||
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_flash_ex.h:
|
||||||
|
|
||||||
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
../system/include/stm32f1xx/stm32f1xx_hal_pwr.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_spi.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim.h:
|
||||||
|
|
||||||
|
../system/include/stm32f1xx/stm32f1xx_hal_tim_ex.h:
|
||||||
|
Binary file not shown.
@ -14,6 +14,8 @@ C_SRCS += \
|
|||||||
../system/src/stm32f1xx/stm32f1xx_hal_pwr.c \
|
../system/src/stm32f1xx/stm32f1xx_hal_pwr.c \
|
||||||
../system/src/stm32f1xx/stm32f1xx_hal_rcc.c \
|
../system/src/stm32f1xx/stm32f1xx_hal_rcc.c \
|
||||||
../system/src/stm32f1xx/stm32f1xx_hal_rcc_ex.c \
|
../system/src/stm32f1xx/stm32f1xx_hal_rcc_ex.c \
|
||||||
|
../system/src/stm32f1xx/stm32f1xx_hal_spi.c \
|
||||||
|
../system/src/stm32f1xx/stm32f1xx_hal_spi_ex.c \
|
||||||
../system/src/stm32f1xx/stm32f1xx_hal_tim.c \
|
../system/src/stm32f1xx/stm32f1xx_hal_tim.c \
|
||||||
../system/src/stm32f1xx/stm32f1xx_hal_tim_ex.c
|
../system/src/stm32f1xx/stm32f1xx_hal_tim_ex.c
|
||||||
|
|
||||||
@ -28,6 +30,8 @@ OBJS += \
|
|||||||
./system/src/stm32f1xx/stm32f1xx_hal_pwr.o \
|
./system/src/stm32f1xx/stm32f1xx_hal_pwr.o \
|
||||||
./system/src/stm32f1xx/stm32f1xx_hal_rcc.o \
|
./system/src/stm32f1xx/stm32f1xx_hal_rcc.o \
|
||||||
./system/src/stm32f1xx/stm32f1xx_hal_rcc_ex.o \
|
./system/src/stm32f1xx/stm32f1xx_hal_rcc_ex.o \
|
||||||
|
./system/src/stm32f1xx/stm32f1xx_hal_spi.o \
|
||||||
|
./system/src/stm32f1xx/stm32f1xx_hal_spi_ex.o \
|
||||||
./system/src/stm32f1xx/stm32f1xx_hal_tim.o \
|
./system/src/stm32f1xx/stm32f1xx_hal_tim.o \
|
||||||
./system/src/stm32f1xx/stm32f1xx_hal_tim_ex.o
|
./system/src/stm32f1xx/stm32f1xx_hal_tim_ex.o
|
||||||
|
|
||||||
@ -42,6 +46,8 @@ C_DEPS += \
|
|||||||
./system/src/stm32f1xx/stm32f1xx_hal_pwr.d \
|
./system/src/stm32f1xx/stm32f1xx_hal_pwr.d \
|
||||||
./system/src/stm32f1xx/stm32f1xx_hal_rcc.d \
|
./system/src/stm32f1xx/stm32f1xx_hal_rcc.d \
|
||||||
./system/src/stm32f1xx/stm32f1xx_hal_rcc_ex.d \
|
./system/src/stm32f1xx/stm32f1xx_hal_rcc_ex.d \
|
||||||
|
./system/src/stm32f1xx/stm32f1xx_hal_spi.d \
|
||||||
|
./system/src/stm32f1xx/stm32f1xx_hal_spi_ex.d \
|
||||||
./system/src/stm32f1xx/stm32f1xx_hal_tim.d \
|
./system/src/stm32f1xx/stm32f1xx_hal_tim.d \
|
||||||
./system/src/stm32f1xx/stm32f1xx_hal_tim_ex.d
|
./system/src/stm32f1xx/stm32f1xx_hal_tim_ex.d
|
||||||
|
|
||||||
|
@ -5,9 +5,9 @@ SourcePath=/home/wn/workspace-stm32/newcar/cube/newcar/Src
|
|||||||
SourceFiles=stm32f1xx_it.h;stm32f1xx_hal_conf.h;mxconstants.h;stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c;
|
SourceFiles=stm32f1xx_it.h;stm32f1xx_hal_conf.h;mxconstants.h;stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c;
|
||||||
|
|
||||||
[PreviousLibFiles]
|
[PreviousLibFiles]
|
||||||
LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xe.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xg.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103x6.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xg.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f105xc.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f102xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f101x6.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f107xc.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xe.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f102x6.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xb.h;
|
LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xe.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xg.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103x6.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xg.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f105xc.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f102xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f101x6.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f107xc.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xe.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f102x6.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xb.h;
|
||||||
|
|
||||||
[PreviousUsedRideFiles]
|
[PreviousUsedRideFiles]
|
||||||
SourceFiles=../Src/main.c;../Src/stm32f1xx_it.c;../Src/stm32f1xx_hal_msp.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xe.s;
|
SourceFiles=../Src/main.c;../Src/stm32f1xx_it.c;../Src/stm32f1xx_hal_msp.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;../Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103xe.s;
|
||||||
HeaderPath=../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Include;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;
|
HeaderPath=../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Include;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;
|
||||||
|
|
||||||
|
674
cube/newcar/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h
Normal file
674
cube/newcar/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h
Normal file
@ -0,0 +1,674 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* @file stm32f1xx_hal_spi.h
|
||||||
|
* @author MCD Application Team
|
||||||
|
* @version V1.0.4
|
||||||
|
* @date 29-April-2016
|
||||||
|
* @brief Header file of SPI HAL module.
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*
|
||||||
|
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
|
#ifndef __STM32F1xx_HAL_SPI_H
|
||||||
|
#define __STM32F1xx_HAL_SPI_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "stm32f1xx_hal_def.h"
|
||||||
|
|
||||||
|
/** @addtogroup STM32F1xx_HAL_Driver
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Exported types ------------------------------------------------------------*/
|
||||||
|
/** @defgroup SPI_Exported_Types SPI Exported Types
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SPI Configuration Structure definition
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint32_t Mode; /*!< Specifies the SPI operating mode.
|
||||||
|
This parameter can be a value of @ref SPI_mode */
|
||||||
|
|
||||||
|
uint32_t Direction; /*!< Specifies the SPI Directional mode state.
|
||||||
|
This parameter can be a value of @ref SPI_Direction_mode */
|
||||||
|
|
||||||
|
uint32_t DataSize; /*!< Specifies the SPI data size.
|
||||||
|
This parameter can be a value of @ref SPI_data_size */
|
||||||
|
|
||||||
|
uint32_t CLKPolarity; /*!< Specifies the serial clock steady state.
|
||||||
|
This parameter can be a value of @ref SPI_Clock_Polarity */
|
||||||
|
|
||||||
|
uint32_t CLKPhase; /*!< Specifies the clock active edge for the bit capture.
|
||||||
|
This parameter can be a value of @ref SPI_Clock_Phase */
|
||||||
|
|
||||||
|
uint32_t NSS; /*!< Specifies whether the NSS signal is managed by
|
||||||
|
hardware (NSS pin) or by software using the SSI bit.
|
||||||
|
This parameter can be a value of @ref SPI_Slave_Select_management */
|
||||||
|
|
||||||
|
uint32_t BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be
|
||||||
|
used to configure the transmit and receive SCK clock.
|
||||||
|
This parameter can be a value of @ref SPI_BaudRate_Prescaler
|
||||||
|
@note The communication clock is derived from the master
|
||||||
|
clock. The slave clock does not need to be set */
|
||||||
|
|
||||||
|
uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.
|
||||||
|
This parameter can be a value of @ref SPI_MSB_LSB_transmission */
|
||||||
|
|
||||||
|
uint32_t TIMode; /*!< Specifies if the TI mode is enabled or not.
|
||||||
|
This parameter can be a value of @ref SPI_TI_mode */
|
||||||
|
|
||||||
|
uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not.
|
||||||
|
This parameter can be a value of @ref SPI_CRC_Calculation */
|
||||||
|
|
||||||
|
uint32_t CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation.
|
||||||
|
This parameter must be a number between Min_Data = 0 and Max_Data = 65535 */
|
||||||
|
|
||||||
|
}SPI_InitTypeDef;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief HAL SPI State structure definition
|
||||||
|
*/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
HAL_SPI_STATE_RESET = 0x00, /*!< SPI not yet initialized or disabled */
|
||||||
|
HAL_SPI_STATE_READY = 0x01, /*!< SPI initialized and ready for use */
|
||||||
|
HAL_SPI_STATE_BUSY = 0x02, /*!< SPI process is ongoing */
|
||||||
|
HAL_SPI_STATE_BUSY_TX = 0x12, /*!< Data Transmission process is ongoing */
|
||||||
|
HAL_SPI_STATE_BUSY_RX = 0x22, /*!< Data Reception process is ongoing */
|
||||||
|
HAL_SPI_STATE_BUSY_TX_RX = 0x32, /*!< Data Transmission and Reception process is ongoing */
|
||||||
|
HAL_SPI_STATE_ERROR = 0x03 /*!< SPI error state */
|
||||||
|
|
||||||
|
}HAL_SPI_StateTypeDef;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SPI handle Structure definition
|
||||||
|
*/
|
||||||
|
typedef struct __SPI_HandleTypeDef
|
||||||
|
{
|
||||||
|
SPI_TypeDef *Instance; /*!< SPI registers base address */
|
||||||
|
|
||||||
|
SPI_InitTypeDef Init; /*!< SPI communication parameters */
|
||||||
|
|
||||||
|
uint8_t *pTxBuffPtr; /*!< Pointer to SPI Tx transfer Buffer */
|
||||||
|
|
||||||
|
uint16_t TxXferSize; /*!< SPI Tx transfer size */
|
||||||
|
|
||||||
|
uint16_t TxXferCount; /*!< SPI Tx Transfer Counter */
|
||||||
|
|
||||||
|
uint8_t *pRxBuffPtr; /*!< Pointer to SPI Rx transfer Buffer */
|
||||||
|
|
||||||
|
uint16_t RxXferSize; /*!< SPI Rx transfer size */
|
||||||
|
|
||||||
|
uint16_t RxXferCount; /*!< SPI Rx Transfer Counter */
|
||||||
|
|
||||||
|
DMA_HandleTypeDef *hdmatx; /*!< SPI Tx DMA handle parameters */
|
||||||
|
|
||||||
|
DMA_HandleTypeDef *hdmarx; /*!< SPI Rx DMA handle parameters */
|
||||||
|
|
||||||
|
void (*RxISR)(struct __SPI_HandleTypeDef * hspi); /*!< function pointer on Rx ISR */
|
||||||
|
|
||||||
|
void (*TxISR)(struct __SPI_HandleTypeDef * hspi); /*!< function pointer on Tx ISR */
|
||||||
|
|
||||||
|
HAL_LockTypeDef Lock; /*!< SPI locking object */
|
||||||
|
|
||||||
|
__IO HAL_SPI_StateTypeDef State; /*!< SPI communication state */
|
||||||
|
|
||||||
|
__IO uint32_t ErrorCode; /*!< SPI Error code */
|
||||||
|
|
||||||
|
}SPI_HandleTypeDef;
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Exported constants --------------------------------------------------------*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Exported_Constants SPI Exported Constants
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Error_Codes SPI Error Codes
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define HAL_SPI_ERROR_NONE ((uint32_t)0x00) /*!< No error */
|
||||||
|
#define HAL_SPI_ERROR_MODF ((uint32_t)0x01) /*!< MODF error */
|
||||||
|
#define HAL_SPI_ERROR_CRC ((uint32_t)0x02) /*!< CRC error */
|
||||||
|
#define HAL_SPI_ERROR_OVR ((uint32_t)0x04) /*!< OVR error */
|
||||||
|
#define HAL_SPI_ERROR_DMA ((uint32_t)0x08) /*!< DMA transfer error */
|
||||||
|
#define HAL_SPI_ERROR_FLAG ((uint32_t)0x10) /*!< Flag: RXNE,TXE, BSY */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @defgroup SPI_mode SPI mode
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_MODE_SLAVE ((uint32_t)0x00000000)
|
||||||
|
#define SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Direction_mode SPI Direction mode
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_DIRECTION_2LINES ((uint32_t)0x00000000)
|
||||||
|
#define SPI_DIRECTION_2LINES_RXONLY SPI_CR1_RXONLY
|
||||||
|
#define SPI_DIRECTION_1LINE SPI_CR1_BIDIMODE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_data_size SPI data size
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_DATASIZE_8BIT ((uint32_t)0x00000000)
|
||||||
|
#define SPI_DATASIZE_16BIT SPI_CR1_DFF
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Clock_Polarity SPI Clock Polarity
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_POLARITY_LOW ((uint32_t)0x00000000)
|
||||||
|
#define SPI_POLARITY_HIGH SPI_CR1_CPOL
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Clock_Phase SPI Clock Phase
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_PHASE_1EDGE ((uint32_t)0x00000000)
|
||||||
|
#define SPI_PHASE_2EDGE SPI_CR1_CPHA
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Slave_Select_management SPI Slave Select management
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_NSS_SOFT SPI_CR1_SSM
|
||||||
|
#define SPI_NSS_HARD_INPUT ((uint32_t)0x00000000)
|
||||||
|
#define SPI_NSS_HARD_OUTPUT ((uint32_t)(SPI_CR2_SSOE << 16))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_BaudRate_Prescaler SPI BaudRate Prescaler
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_BAUDRATEPRESCALER_2 ((uint32_t)0x00000000)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_4 ((uint32_t)SPI_CR1_BR_0)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_8 ((uint32_t)SPI_CR1_BR_1)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_16 ((uint32_t)SPI_CR1_BR_1 | SPI_CR1_BR_0)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_32 ((uint32_t)SPI_CR1_BR_2)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_64 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_0)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_128 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_1)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_256 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_MSB_LSB_transmission SPI MSB LSB transmission
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_FIRSTBIT_MSB ((uint32_t)0x00000000)
|
||||||
|
#define SPI_FIRSTBIT_LSB SPI_CR1_LSBFIRST
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_TI_mode SPI TI mode disable
|
||||||
|
* @brief SPI TI Mode not supported for STM32F1xx family
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_TIMODE_DISABLE ((uint32_t)0x00000000)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_CRC_Calculation SPI CRC Calculation
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_CRCCALCULATION_DISABLE ((uint32_t)0x00000000)
|
||||||
|
#define SPI_CRCCALCULATION_ENABLE SPI_CR1_CRCEN
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Interrupt_configuration_definition SPI Interrupt configuration definition
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_IT_TXE SPI_CR2_TXEIE
|
||||||
|
#define SPI_IT_RXNE SPI_CR2_RXNEIE
|
||||||
|
#define SPI_IT_ERR SPI_CR2_ERRIE
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Flag_definition SPI Flag definition
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_FLAG_RXNE SPI_SR_RXNE
|
||||||
|
#define SPI_FLAG_TXE SPI_SR_TXE
|
||||||
|
#define SPI_FLAG_CRCERR SPI_SR_CRCERR
|
||||||
|
#define SPI_FLAG_MODF SPI_SR_MODF
|
||||||
|
#define SPI_FLAG_OVR SPI_SR_OVR
|
||||||
|
#define SPI_FLAG_BSY SPI_SR_BSY
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Private constants ---------------------------------------------------------*/
|
||||||
|
/** @defgroup SPI_Private_Constants SPI Private Constants
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_INVALID_CRC_ERROR 0 /* CRC error wrongly detected */
|
||||||
|
#define SPI_VALID_CRC_ERROR 1 /* CRC error is true */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Exported macro ------------------------------------------------------------*/
|
||||||
|
/** @defgroup SPI_Exported_Macros SPI Exported Macros
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @brief Reset SPI handle state
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPI_STATE_RESET)
|
||||||
|
|
||||||
|
/** @brief Enable the specified SPI interrupts.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @param __INTERRUPT__: specifies the interrupt source to enable.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||||
|
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||||
|
* @arg SPI_IT_ERR: Error interrupt enable
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) SET_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__))
|
||||||
|
|
||||||
|
/** @brief Disable the specified SPI interrupts.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @param __INTERRUPT__: specifies the interrupt source to disable.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||||
|
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||||
|
* @arg SPI_IT_ERR: Error interrupt enable
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__))
|
||||||
|
|
||||||
|
/** @brief Check if the specified SPI interrupt source is enabled or disabled.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @param __INTERRUPT__: specifies the SPI interrupt source to check.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||||
|
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||||
|
* @arg SPI_IT_ERR: Error interrupt enable
|
||||||
|
* @retval The new state of __IT__ (TRUE or FALSE).
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
|
||||||
|
|
||||||
|
/** @brief Check whether the specified SPI flag is set or not.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @param __FLAG__: specifies the flag to check.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg SPI_FLAG_RXNE: Receive buffer not empty flag
|
||||||
|
* @arg SPI_FLAG_TXE: Transmit buffer empty flag
|
||||||
|
* @arg SPI_FLAG_CRCERR: CRC error flag
|
||||||
|
* @arg SPI_FLAG_MODF: Mode fault flag
|
||||||
|
* @arg SPI_FLAG_OVR: Overrun flag
|
||||||
|
* @arg SPI_FLAG_BSY: Busy flag
|
||||||
|
* @retval The new state of __FLAG__ (TRUE or FALSE).
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
|
||||||
|
|
||||||
|
/** @brief Clear the SPI CRCERR pending flag.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_CLEAR_CRCERRFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR = ~(SPI_FLAG_CRCERR))
|
||||||
|
|
||||||
|
/** @brief Clear the SPI MODF pending flag.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_CLEAR_MODFFLAG(__HANDLE__) \
|
||||||
|
do{ \
|
||||||
|
__IO uint32_t tmpreg; \
|
||||||
|
tmpreg = (__HANDLE__)->Instance->SR; \
|
||||||
|
tmpreg = CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE); \
|
||||||
|
UNUSED(tmpreg); \
|
||||||
|
}while(0)
|
||||||
|
|
||||||
|
/** @brief Clear the SPI OVR pending flag.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_CLEAR_OVRFLAG(__HANDLE__) \
|
||||||
|
do{ \
|
||||||
|
__IO uint32_t tmpreg; \
|
||||||
|
tmpreg = (__HANDLE__)->Instance->DR; \
|
||||||
|
tmpreg = (__HANDLE__)->Instance->SR; \
|
||||||
|
UNUSED(tmpreg); \
|
||||||
|
}while(0)
|
||||||
|
|
||||||
|
|
||||||
|
/** @brief Enables the SPI.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE)
|
||||||
|
|
||||||
|
/** @brief Disables the SPI.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Private macros -----------------------------------------------------------*/
|
||||||
|
/** @defgroup SPI_Private_Macros SPI Private Macros
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Mode parameter is in allowed range.
|
||||||
|
* @param __MODE__: specifies the SPI Mode.
|
||||||
|
* This parameter can be a value of @ref SPI_mode
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_MODE(__MODE__) (((__MODE__) == SPI_MODE_SLAVE) || ((__MODE__) == SPI_MODE_MASTER))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Direction Mode parameter is in allowed range.
|
||||||
|
* @param __MODE__: specifies the SPI Direction Mode.
|
||||||
|
* This parameter can be a value of @ref SPI_Direction_mode
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_DIRECTION_MODE(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \
|
||||||
|
((__MODE__) == SPI_DIRECTION_2LINES_RXONLY) || \
|
||||||
|
((__MODE__) == SPI_DIRECTION_1LINE))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Direction Mode parameter is 1 or 2 lines.
|
||||||
|
* @param __MODE__: specifies the SPI Direction Mode.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_DIRECTION_2LINES_OR_1LINE(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \
|
||||||
|
((__MODE__) == SPI_DIRECTION_1LINE))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Direction Mode parameter is 2 lines.
|
||||||
|
* @param __MODE__: specifies the SPI Direction Mode.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_DIRECTION_2LINES(__MODE__) ((__MODE__) == SPI_DIRECTION_2LINES)
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Data Size parameter is in allowed range.
|
||||||
|
* @param __DATASIZE__: specifies the SPI Data Size.
|
||||||
|
* This parameter can be a value of @ref SPI_data_size
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_DATASIZE(__DATASIZE__) (((__DATASIZE__) == SPI_DATASIZE_16BIT) || \
|
||||||
|
((__DATASIZE__) == SPI_DATASIZE_8BIT))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Serial clock steady state parameter is in allowed range.
|
||||||
|
* @param __CPOL__: specifies the SPI serial clock steady state.
|
||||||
|
* This parameter can be a value of @ref SPI_Clock_Polarity
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_CPOL(__CPOL__) (((__CPOL__) == SPI_POLARITY_LOW) || \
|
||||||
|
((__CPOL__) == SPI_POLARITY_HIGH))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Clock Phase parameter is in allowed range.
|
||||||
|
* @param __CPHA__: specifies the SPI Clock Phase.
|
||||||
|
* This parameter can be a value of @ref SPI_Clock_Phase
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_CPHA(__CPHA__) (((__CPHA__) == SPI_PHASE_1EDGE) || \
|
||||||
|
((__CPHA__) == SPI_PHASE_2EDGE))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Slave select parameter is in allowed range.
|
||||||
|
* @param __NSS__: specifies the SPI Slave Slelect management parameter.
|
||||||
|
* This parameter can be a value of @ref SPI_Slave_Select_management
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_NSS(__NSS__) (((__NSS__) == SPI_NSS_SOFT) || \
|
||||||
|
((__NSS__) == SPI_NSS_HARD_INPUT) || \
|
||||||
|
((__NSS__) == SPI_NSS_HARD_OUTPUT))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Baudrate prescaler parameter is in allowed range.
|
||||||
|
* @param __PRESCALER__: specifies the SPI Baudrate prescaler.
|
||||||
|
* This parameter can be a value of @ref SPI_BaudRate_Prescaler
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_BAUDRATE_PRESCALER(__PRESCALER__) (((__PRESCALER__) == SPI_BAUDRATEPRESCALER_2) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_4) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_8) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_16) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_32) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_64) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_128) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_256))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI MSB LSB transmission parameter is in allowed range.
|
||||||
|
* @param __BIT__: specifies the SPI MSB LSB transmission (whether data transfer starts from MSB or LSB bit).
|
||||||
|
* This parameter can be a value of @ref SPI_MSB_LSB_transmission
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_FIRST_BIT(__BIT__) (((__BIT__) == SPI_FIRSTBIT_MSB) || \
|
||||||
|
((__BIT__) == SPI_FIRSTBIT_LSB))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI TI mode parameter is in allowed range.
|
||||||
|
* @param __MODE__: specifies the SPI TI mode.
|
||||||
|
* This parameter can be a value of @ref SPI_TI_mode
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_TIMODE(__MODE__) ((__MODE__) == SPI_TIMODE_DISABLE)
|
||||||
|
|
||||||
|
/** @brief Checks if SPI CRC calculation enabled state is in allowed range.
|
||||||
|
* @param __CALCULATION__: specifies the SPI CRC calculation enable state.
|
||||||
|
* This parameter can be a value of @ref SPI_CRC_Calculation
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_CRC_CALCULATION(__CALCULATION__) (((__CALCULATION__) == SPI_CRCCALCULATION_DISABLE) || \
|
||||||
|
((__CALCULATION__) == SPI_CRCCALCULATION_ENABLE))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI polynomial value to be used for the CRC calculation, is in allowed range.
|
||||||
|
* @param __POLYNOMIAL__: specifies the SPI polynomial value to be used for the CRC calculation.
|
||||||
|
* This parameter must be a number between Min_Data = 0 and Max_Data = 65535
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_CRC_POLYNOMIAL(__POLYNOMIAL__) (((__POLYNOMIAL__) >= 0x1) && ((__POLYNOMIAL__) <= 0xFFFF))
|
||||||
|
|
||||||
|
/** @brief Sets the SPI transmit-only mode.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define SPI_1LINE_TX(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE)
|
||||||
|
|
||||||
|
/** @brief Sets the SPI receive-only mode.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define SPI_1LINE_RX(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE)
|
||||||
|
|
||||||
|
/** @brief Resets the CRC calculation of the SPI.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define SPI_RESET_CRC(__HANDLE__) do{CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN);\
|
||||||
|
SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN);}while(0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Exported functions --------------------------------------------------------*/
|
||||||
|
/** @addtogroup SPI_Exported_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Initialization/de-initialization functions **********************************/
|
||||||
|
/** @addtogroup SPI_Exported_Functions_Group1
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_DeInit (SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* I/O operation functions *****************************************************/
|
||||||
|
/** @addtogroup SPI_Exported_Functions_Group2
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi);
|
||||||
|
|
||||||
|
void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Peripheral State and Control functions **************************************/
|
||||||
|
/** @addtogroup SPI_Exported_Functions_Group3
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi);
|
||||||
|
uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Private functions --------------------------------------------------------*/
|
||||||
|
/** @addtogroup SPI_Private_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
uint8_t SPI_ISCRCErrorValid(SPI_HandleTypeDef *hspi);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __STM32F1xx_HAL_SPI_H */
|
||||||
|
|
||||||
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
2410
cube/newcar/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c
Normal file
2410
cube/newcar/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,217 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* @file stm32f1xx_hal_spi_ex.c
|
||||||
|
* @author MCD Application Team
|
||||||
|
* @version V1.0.4
|
||||||
|
* @date 29-April-2016
|
||||||
|
* @brief Extended SPI HAL module driver.
|
||||||
|
*
|
||||||
|
* This file provides firmware functions to manage the following
|
||||||
|
* functionalities SPI extension peripheral:
|
||||||
|
* + Extended Peripheral Control functions
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*
|
||||||
|
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
|
/** @addtogroup STM32F1xx_HAL_Driver
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#ifdef HAL_SPI_MODULE_ENABLED
|
||||||
|
|
||||||
|
/** @defgroup SPI_Private_Variables SPI Private Variables
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/* Variable used to determine if device is impacted by implementation of workaround
|
||||||
|
related to wrong CRC errors detection on SPI2. Conditions in which this workaround has to be applied, are:
|
||||||
|
- STM32F101CDE/STM32F103CDE
|
||||||
|
- Revision ID : Z
|
||||||
|
- SPI2
|
||||||
|
- In receive only mode, with CRC calculation enabled, at the end of the CRC reception,
|
||||||
|
the software needs to check the CRCERR flag. If it is found set, read back the SPI_RXCRC:
|
||||||
|
+ If the value is 0, the complete data transfer is successful.
|
||||||
|
+ Otherwise, one or more errors have been detected during the data transfer by CPU or DMA.
|
||||||
|
If CRCERR is found reset, the complete data transfer is considered successful.
|
||||||
|
*/
|
||||||
|
uint8_t uCRCErrorWorkaroundCheck = 0;
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
|
/* Private define ------------------------------------------------------------*/
|
||||||
|
/* Private macro -------------------------------------------------------------*/
|
||||||
|
/* Private variables ---------------------------------------------------------*/
|
||||||
|
/* Private function prototypes -----------------------------------------------*/
|
||||||
|
/* Private functions ---------------------------------------------------------*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI_Exported_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI_Exported_Functions_Group1
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initializes the SPI according to the specified parameters
|
||||||
|
* in the SPI_InitTypeDef and create the associated handle.
|
||||||
|
* @param hspi: pointer to a SPI_HandleTypeDef structure that contains
|
||||||
|
* the configuration information for SPI module.
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi)
|
||||||
|
{
|
||||||
|
/* Check the SPI handle allocation */
|
||||||
|
if(hspi == NULL)
|
||||||
|
{
|
||||||
|
return HAL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check the parameters */
|
||||||
|
assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance));
|
||||||
|
assert_param(IS_SPI_MODE(hspi->Init.Mode));
|
||||||
|
assert_param(IS_SPI_DIRECTION_MODE(hspi->Init.Direction));
|
||||||
|
assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize));
|
||||||
|
assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity));
|
||||||
|
assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase));
|
||||||
|
assert_param(IS_SPI_NSS(hspi->Init.NSS));
|
||||||
|
assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler));
|
||||||
|
assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit));
|
||||||
|
assert_param(IS_SPI_TIMODE(hspi->Init.TIMode));
|
||||||
|
assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation));
|
||||||
|
assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial));
|
||||||
|
|
||||||
|
if(hspi->State == HAL_SPI_STATE_RESET)
|
||||||
|
{
|
||||||
|
/* Init the low level hardware : GPIO, CLOCK, NVIC... */
|
||||||
|
HAL_SPI_MspInit(hspi);
|
||||||
|
}
|
||||||
|
|
||||||
|
hspi->State = HAL_SPI_STATE_BUSY;
|
||||||
|
|
||||||
|
/* Disble the selected SPI peripheral */
|
||||||
|
__HAL_SPI_DISABLE(hspi);
|
||||||
|
|
||||||
|
/*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/
|
||||||
|
/* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management,
|
||||||
|
Communication speed, First bit and CRC calculation state */
|
||||||
|
WRITE_REG(hspi->Instance->CR1, (hspi->Init.Mode | hspi->Init.Direction | hspi->Init.DataSize |
|
||||||
|
hspi->Init.CLKPolarity | hspi->Init.CLKPhase | (hspi->Init.NSS & SPI_CR1_SSM) |
|
||||||
|
hspi->Init.BaudRatePrescaler | hspi->Init.FirstBit | hspi->Init.CRCCalculation) );
|
||||||
|
|
||||||
|
/* Configure : NSS management */
|
||||||
|
WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16) & SPI_CR2_SSOE) | hspi->Init.TIMode));
|
||||||
|
|
||||||
|
/*---------------------------- SPIx CRCPOLY Configuration ------------------*/
|
||||||
|
/* Configure : CRC Polynomial */
|
||||||
|
WRITE_REG(hspi->Instance->CRCPR, hspi->Init.CRCPolynomial);
|
||||||
|
|
||||||
|
#if defined (STM32F101x6) || defined (STM32F101xB) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F102x6) || defined (STM32F102xB) || defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
|
||||||
|
/* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */
|
||||||
|
CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (STM32F101xE) || defined (STM32F103xE)
|
||||||
|
/* Check RevisionID value for identifying if Device is Rev Z (0x0001) in order to enable workaround for
|
||||||
|
CRC errors wrongly detected */
|
||||||
|
/* Pb is that ES_STM32F10xxCDE also identify an issue in Debug registers access while not in Debug mode.
|
||||||
|
Revision ID information is only available in Debug mode, so Workaround could not be implemented
|
||||||
|
to distinguish Rev Z devices (issue present) from more recent version (issue fixed).
|
||||||
|
So, in case of Revison Z F101 or F103 devices, below variable should be assigned to 1 */
|
||||||
|
uCRCErrorWorkaroundCheck = 0;
|
||||||
|
#else
|
||||||
|
uCRCErrorWorkaroundCheck = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
hspi->ErrorCode = HAL_SPI_ERROR_NONE;
|
||||||
|
hspi->State = HAL_SPI_STATE_READY;
|
||||||
|
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI_Private_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Checks if encountered CRC error could be corresponding to wrongly detected errors
|
||||||
|
* according to SPI instance, Device type, and revision ID.
|
||||||
|
* @param hspi: pointer to a SPI_HandleTypeDef structure that contains
|
||||||
|
* the configuration information for SPI module.
|
||||||
|
* @retval CRC error validity (SPI_INVALID_CRC_ERROR or SPI_VALID_CRC_ERROR).
|
||||||
|
*/
|
||||||
|
uint8_t SPI_ISCRCErrorValid(SPI_HandleTypeDef *hspi)
|
||||||
|
{
|
||||||
|
#if defined (STM32F101xE) || defined (STM32F103xE)
|
||||||
|
/* Check how to handle this CRC error (workaround to be applied or not) */
|
||||||
|
/* If CRC errors could be wrongly detected (issue 2.15.2 in STM32F10xxC/D/E silicon limitations ES (DocID14732 Rev 13) */
|
||||||
|
if ( (uCRCErrorWorkaroundCheck != 0) && (hspi->Instance == SPI2) )
|
||||||
|
{
|
||||||
|
if (hspi->Instance->RXCRCR == 0)
|
||||||
|
{
|
||||||
|
return (SPI_INVALID_CRC_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (SPI_VALID_CRC_ERROR);
|
||||||
|
#else
|
||||||
|
return (SPI_VALID_CRC_ERROR);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* HAL_SPI_MODULE_ENABLED */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
@ -43,6 +43,36 @@
|
|||||||
|
|
||||||
#define LED_Pin GPIO_PIN_13
|
#define LED_Pin GPIO_PIN_13
|
||||||
#define LED_GPIO_Port GPIOC
|
#define LED_GPIO_Port GPIOC
|
||||||
|
#define MOT4_CNT_Pin GPIO_PIN_0
|
||||||
|
#define MOT4_CNT_GPIO_Port GPIOA
|
||||||
|
#define OLED_DC_Pin GPIO_PIN_1
|
||||||
|
#define OLED_DC_GPIO_Port GPIOA
|
||||||
|
#define OLED_RST_Pin GPIO_PIN_2
|
||||||
|
#define OLED_RST_GPIO_Port GPIOA
|
||||||
|
#define OLED_CS_Pin GPIO_PIN_3
|
||||||
|
#define OLED_CS_GPIO_Port GPIOA
|
||||||
|
#define MOT1_DIR_Pin GPIO_PIN_8
|
||||||
|
#define MOT1_DIR_GPIO_Port GPIOE
|
||||||
|
#define MOT1_PWM_Pin GPIO_PIN_9
|
||||||
|
#define MOT1_PWM_GPIO_Port GPIOE
|
||||||
|
#define MOT2_DIR_Pin GPIO_PIN_10
|
||||||
|
#define MOT2_DIR_GPIO_Port GPIOE
|
||||||
|
#define MOT2_PWM_Pin GPIO_PIN_11
|
||||||
|
#define MOT2_PWM_GPIO_Port GPIOE
|
||||||
|
#define MOT3_DIR_Pin GPIO_PIN_12
|
||||||
|
#define MOT3_DIR_GPIO_Port GPIOE
|
||||||
|
#define MOT3_PWM_Pin GPIO_PIN_13
|
||||||
|
#define MOT3_PWM_GPIO_Port GPIOE
|
||||||
|
#define MOT4_PWM_Pin GPIO_PIN_14
|
||||||
|
#define MOT4_PWM_GPIO_Port GPIOE
|
||||||
|
#define MOT4_DIR_Pin GPIO_PIN_15
|
||||||
|
#define MOT4_DIR_GPIO_Port GPIOE
|
||||||
|
#define MOT1_CNT_Pin GPIO_PIN_15
|
||||||
|
#define MOT1_CNT_GPIO_Port GPIOA
|
||||||
|
#define MOT2_CNT_Pin GPIO_PIN_2
|
||||||
|
#define MOT2_CNT_GPIO_Port GPIOD
|
||||||
|
#define MOT3_CNT_Pin GPIO_PIN_0
|
||||||
|
#define MOT3_CNT_GPIO_Port GPIOE
|
||||||
/* USER CODE BEGIN Private defines */
|
/* USER CODE BEGIN Private defines */
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
/* USER CODE END Private defines */
|
||||||
|
@ -75,9 +75,9 @@
|
|||||||
/*#define HAL_SD_MODULE_ENABLED */
|
/*#define HAL_SD_MODULE_ENABLED */
|
||||||
/*#define HAL_SDRAM_MODULE_ENABLED */
|
/*#define HAL_SDRAM_MODULE_ENABLED */
|
||||||
/*#define HAL_SMARTCARD_MODULE_ENABLED */
|
/*#define HAL_SMARTCARD_MODULE_ENABLED */
|
||||||
/*#define HAL_SPI_MODULE_ENABLED */
|
#define HAL_SPI_MODULE_ENABLED
|
||||||
/*#define HAL_SRAM_MODULE_ENABLED */
|
/*#define HAL_SRAM_MODULE_ENABLED */
|
||||||
/*#define HAL_TIM_MODULE_ENABLED */
|
#define HAL_TIM_MODULE_ENABLED
|
||||||
/*#define HAL_UART_MODULE_ENABLED */
|
/*#define HAL_UART_MODULE_ENABLED */
|
||||||
/*#define HAL_USART_MODULE_ENABLED */
|
/*#define HAL_USART_MODULE_ENABLED */
|
||||||
/*#define HAL_WWDG_MODULE_ENABLED */
|
/*#define HAL_WWDG_MODULE_ENABLED */
|
||||||
|
@ -38,6 +38,13 @@
|
|||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
|
SPI_HandleTypeDef hspi1;
|
||||||
|
|
||||||
|
TIM_HandleTypeDef htim1;
|
||||||
|
TIM_HandleTypeDef htim2;
|
||||||
|
TIM_HandleTypeDef htim3;
|
||||||
|
TIM_HandleTypeDef htim4;
|
||||||
|
TIM_HandleTypeDef htim8;
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
/* USER CODE BEGIN PV */
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
@ -48,6 +55,15 @@
|
|||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
void Error_Handler(void);
|
void Error_Handler(void);
|
||||||
static void MX_GPIO_Init(void);
|
static void MX_GPIO_Init(void);
|
||||||
|
static void MX_SPI1_Init(void);
|
||||||
|
static void MX_TIM1_Init(void);
|
||||||
|
static void MX_TIM2_Init(void);
|
||||||
|
static void MX_TIM3_Init(void);
|
||||||
|
static void MX_TIM4_Init(void);
|
||||||
|
static void MX_TIM8_Init(void);
|
||||||
|
|
||||||
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE BEGIN PFP */
|
/* USER CODE BEGIN PFP */
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
/* Private function prototypes -----------------------------------------------*/
|
||||||
@ -75,6 +91,12 @@ int main(void)
|
|||||||
|
|
||||||
/* Initialize all configured peripherals */
|
/* Initialize all configured peripherals */
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
|
MX_SPI1_Init();
|
||||||
|
MX_TIM1_Init();
|
||||||
|
MX_TIM2_Init();
|
||||||
|
MX_TIM3_Init();
|
||||||
|
MX_TIM4_Init();
|
||||||
|
MX_TIM8_Init();
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
|
||||||
@ -131,6 +153,255 @@ void SystemClock_Config(void)
|
|||||||
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
|
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* SPI1 init function */
|
||||||
|
static void MX_SPI1_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
hspi1.Instance = SPI1;
|
||||||
|
hspi1.Init.Mode = SPI_MODE_MASTER;
|
||||||
|
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
|
||||||
|
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||||
|
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
|
||||||
|
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
|
||||||
|
hspi1.Init.NSS = SPI_NSS_SOFT;
|
||||||
|
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
|
||||||
|
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||||
|
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||||
|
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
||||||
|
hspi1.Init.CRCPolynomial = 10;
|
||||||
|
if (HAL_SPI_Init(&hspi1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM1 init function */
|
||||||
|
static void MX_TIM1_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim1.Instance = TIM1;
|
||||||
|
htim1.Init.Prescaler = 0;
|
||||||
|
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim1.Init.Period = 0;
|
||||||
|
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
htim1.Init.RepetitionCounter = 0;
|
||||||
|
if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
|
||||||
|
sBreakDeadTimeConfig.DeadTime = 0;
|
||||||
|
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
|
||||||
|
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
|
||||||
|
if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 0;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
|
||||||
|
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM2 init function */
|
||||||
|
static void MX_TIM2_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim2.Instance = TIM2;
|
||||||
|
htim2.Init.Prescaler = 0;
|
||||||
|
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim2.Init.Period = 0;
|
||||||
|
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim2, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM3 init function */
|
||||||
|
static void MX_TIM3_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim3.Instance = TIM3;
|
||||||
|
htim3.Init.Prescaler = 0;
|
||||||
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim3.Init.Period = 0;
|
||||||
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim3, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM4 init function */
|
||||||
|
static void MX_TIM4_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim4.Instance = TIM4;
|
||||||
|
htim4.Init.Prescaler = 0;
|
||||||
|
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim4.Init.Period = 0;
|
||||||
|
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim4, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM8 init function */
|
||||||
|
static void MX_TIM8_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim8.Instance = TIM8;
|
||||||
|
htim8.Init.Prescaler = 0;
|
||||||
|
htim8.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim8.Init.Period = 0;
|
||||||
|
htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
htim8.Init.RepetitionCounter = 0;
|
||||||
|
if (HAL_TIM_Base_Init(&htim8) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim8, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Configure pins as
|
/** Configure pins as
|
||||||
* Analog
|
* Analog
|
||||||
* Input
|
* Input
|
||||||
@ -146,16 +417,36 @@ static void MX_GPIO_Init(void)
|
|||||||
/* GPIO Ports Clock Enable */
|
/* GPIO Ports Clock Enable */
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(GPIOA, OLED_DC_Pin|OLED_RST_Pin|OLED_CS_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(GPIOE, MOT1_DIR_Pin|MOT2_DIR_Pin|MOT3_DIR_Pin|MOT4_DIR_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin : LED_Pin */
|
/*Configure GPIO pin : LED_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_Pin;
|
GPIO_InitStruct.Pin = LED_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pins : OLED_DC_Pin OLED_RST_Pin OLED_CS_Pin */
|
||||||
|
GPIO_InitStruct.Pin = OLED_DC_Pin|OLED_RST_Pin|OLED_CS_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pins : MOT1_DIR_Pin MOT2_DIR_Pin MOT3_DIR_Pin MOT4_DIR_Pin */
|
||||||
|
GPIO_InitStruct.Pin = MOT1_DIR_Pin|MOT2_DIR_Pin|MOT3_DIR_Pin|MOT4_DIR_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 4 */
|
/* USER CODE BEGIN 4 */
|
||||||
|
@ -77,6 +77,280 @@ void HAL_MspInit(void)
|
|||||||
/* USER CODE END MspInit 1 */
|
/* USER CODE END MspInit 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
|
||||||
|
{
|
||||||
|
|
||||||
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
if(hspi->Instance==SPI1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN SPI1_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END SPI1_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_SPI1_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**SPI1 GPIO Configuration
|
||||||
|
PA5 ------> SPI1_SCK
|
||||||
|
PA6 ------> SPI1_MISO
|
||||||
|
PA7 ------> SPI1_MOSI
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_6;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN SPI1_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END SPI1_MspInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(hspi->Instance==SPI1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN SPI1_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END SPI1_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_SPI1_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**SPI1 GPIO Configuration
|
||||||
|
PA5 ------> SPI1_SCK
|
||||||
|
PA6 ------> SPI1_MISO
|
||||||
|
PA7 ------> SPI1_MOSI
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
|
||||||
|
|
||||||
|
}
|
||||||
|
/* USER CODE BEGIN SPI1_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END SPI1_MspDeInit 1 */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
|
||||||
|
{
|
||||||
|
|
||||||
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
if(htim_base->Instance==TIM1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM1_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM1_CLK_ENABLE();
|
||||||
|
/* USER CODE BEGIN TIM1_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM2)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM2_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM2_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**TIM2 GPIO Configuration
|
||||||
|
PA15 ------> TIM2_ETR
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT1_CNT_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(MOT1_CNT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
__HAL_AFIO_REMAP_TIM2_PARTIAL_1();
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM2_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM3_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**TIM3 GPIO Configuration
|
||||||
|
PD2 ------> TIM3_ETR
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT2_CNT_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(MOT2_CNT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM3_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM4_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**TIM4 GPIO Configuration
|
||||||
|
PE0 ------> TIM4_ETR
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT3_CNT_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(MOT3_CNT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM4_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM8)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM8_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM8_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM8_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**TIM8 GPIO Configuration
|
||||||
|
PA0-WKUP ------> TIM8_ETR
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT4_CNT_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(MOT4_CNT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM8_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM8_MspInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
|
||||||
|
{
|
||||||
|
|
||||||
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
if(htim->Instance==TIM1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM1_MspPostInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspPostInit 0 */
|
||||||
|
|
||||||
|
/**TIM1 GPIO Configuration
|
||||||
|
PE9 ------> TIM1_CH1
|
||||||
|
PE11 ------> TIM1_CH2
|
||||||
|
PE13 ------> TIM1_CH3
|
||||||
|
PE14 ------> TIM1_CH4
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT1_PWM_Pin|MOT2_PWM_Pin|MOT3_PWM_Pin|MOT4_PWM_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
__HAL_AFIO_REMAP_TIM1_ENABLE();
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM1_MspPostInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspPostInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(htim_base->Instance==TIM1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM1_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM1_CLK_DISABLE();
|
||||||
|
/* USER CODE BEGIN TIM1_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM2)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM2_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM2_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**TIM2 GPIO Configuration
|
||||||
|
PA15 ------> TIM2_ETR
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(MOT1_CNT_GPIO_Port, MOT1_CNT_Pin);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM2_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM3_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**TIM3 GPIO Configuration
|
||||||
|
PD2 ------> TIM3_ETR
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(MOT2_CNT_GPIO_Port, MOT2_CNT_Pin);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM3_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM4_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**TIM4 GPIO Configuration
|
||||||
|
PE0 ------> TIM4_ETR
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(MOT3_CNT_GPIO_Port, MOT3_CNT_Pin);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM4_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM8)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM8_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM8_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM8_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**TIM8 GPIO Configuration
|
||||||
|
PA0-WKUP ------> TIM8_ETR
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(MOT4_CNT_GPIO_Port, MOT4_CNT_Pin);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM8_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM8_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
@ -4,17 +4,46 @@ KeepUserPlacement=false
|
|||||||
Mcu.Family=STM32F1
|
Mcu.Family=STM32F1
|
||||||
Mcu.IP0=NVIC
|
Mcu.IP0=NVIC
|
||||||
Mcu.IP1=RCC
|
Mcu.IP1=RCC
|
||||||
Mcu.IP2=SYS
|
Mcu.IP2=SPI1
|
||||||
Mcu.IPNb=3
|
Mcu.IP3=SYS
|
||||||
|
Mcu.IP4=TIM1
|
||||||
|
Mcu.IP5=TIM2
|
||||||
|
Mcu.IP6=TIM3
|
||||||
|
Mcu.IP7=TIM4
|
||||||
|
Mcu.IP8=TIM8
|
||||||
|
Mcu.IPNb=9
|
||||||
Mcu.Name=STM32F103V(C-D-E)Tx
|
Mcu.Name=STM32F103V(C-D-E)Tx
|
||||||
Mcu.Package=LQFP100
|
Mcu.Package=LQFP100
|
||||||
Mcu.Pin0=PC13-TAMPER-RTC
|
Mcu.Pin0=PC13-TAMPER-RTC
|
||||||
Mcu.Pin1=OSC_IN
|
Mcu.Pin1=OSC_IN
|
||||||
|
Mcu.Pin10=PE8
|
||||||
|
Mcu.Pin11=PE9
|
||||||
|
Mcu.Pin12=PE10
|
||||||
|
Mcu.Pin13=PE11
|
||||||
|
Mcu.Pin14=PE12
|
||||||
|
Mcu.Pin15=PE13
|
||||||
|
Mcu.Pin16=PE14
|
||||||
|
Mcu.Pin17=PE15
|
||||||
|
Mcu.Pin18=PA13
|
||||||
|
Mcu.Pin19=PA14
|
||||||
Mcu.Pin2=OSC_OUT
|
Mcu.Pin2=OSC_OUT
|
||||||
Mcu.Pin3=PA13
|
Mcu.Pin20=PA15
|
||||||
Mcu.Pin4=PA14
|
Mcu.Pin21=PD2
|
||||||
Mcu.Pin5=VP_SYS_VS_Systick
|
Mcu.Pin22=PE0
|
||||||
Mcu.PinsNb=6
|
Mcu.Pin23=VP_SYS_VS_Systick
|
||||||
|
Mcu.Pin24=VP_TIM1_VS_ClockSourceINT
|
||||||
|
Mcu.Pin25=VP_TIM2_VS_ControllerModeClock
|
||||||
|
Mcu.Pin26=VP_TIM3_VS_ControllerModeClock
|
||||||
|
Mcu.Pin27=VP_TIM4_VS_ControllerModeClock
|
||||||
|
Mcu.Pin28=VP_TIM8_VS_ControllerModeClock
|
||||||
|
Mcu.Pin3=PA0-WKUP
|
||||||
|
Mcu.Pin4=PA1
|
||||||
|
Mcu.Pin5=PA2
|
||||||
|
Mcu.Pin6=PA3
|
||||||
|
Mcu.Pin7=PA5
|
||||||
|
Mcu.Pin8=PA6
|
||||||
|
Mcu.Pin9=PA7
|
||||||
|
Mcu.PinsNb=29
|
||||||
Mcu.UserConstants=
|
Mcu.UserConstants=
|
||||||
Mcu.UserName=STM32F103VCTx
|
Mcu.UserName=STM32F103VCTx
|
||||||
MxCube.Version=4.16.1
|
MxCube.Version=4.16.1
|
||||||
@ -33,10 +62,34 @@ OSC_IN.Mode=HSE-External-Oscillator
|
|||||||
OSC_IN.Signal=RCC_OSC_IN
|
OSC_IN.Signal=RCC_OSC_IN
|
||||||
OSC_OUT.Mode=HSE-External-Oscillator
|
OSC_OUT.Mode=HSE-External-Oscillator
|
||||||
OSC_OUT.Signal=RCC_OSC_OUT
|
OSC_OUT.Signal=RCC_OSC_OUT
|
||||||
|
PA0-WKUP.GPIOParameters=GPIO_Label
|
||||||
|
PA0-WKUP.GPIO_Label=MOT4_CNT
|
||||||
|
PA0-WKUP.Signal=S_TIM8_ETR
|
||||||
|
PA1.GPIOParameters=GPIO_Label
|
||||||
|
PA1.GPIO_Label=OLED_DC
|
||||||
|
PA1.Locked=true
|
||||||
|
PA1.Signal=GPIO_Output
|
||||||
PA13.Mode=Serial_Wire
|
PA13.Mode=Serial_Wire
|
||||||
PA13.Signal=SYS_JTMS-SWDIO
|
PA13.Signal=SYS_JTMS-SWDIO
|
||||||
PA14.Mode=Serial_Wire
|
PA14.Mode=Serial_Wire
|
||||||
PA14.Signal=SYS_JTCK-SWCLK
|
PA14.Signal=SYS_JTCK-SWCLK
|
||||||
|
PA15.GPIOParameters=GPIO_Label
|
||||||
|
PA15.GPIO_Label=MOT1_CNT
|
||||||
|
PA15.Signal=S_TIM2_CH1_ETR
|
||||||
|
PA2.GPIOParameters=GPIO_Label
|
||||||
|
PA2.GPIO_Label=OLED_RST
|
||||||
|
PA2.Locked=true
|
||||||
|
PA2.Signal=GPIO_Output
|
||||||
|
PA3.GPIOParameters=GPIO_Label
|
||||||
|
PA3.GPIO_Label=OLED_CS
|
||||||
|
PA3.Locked=true
|
||||||
|
PA3.Signal=GPIO_Output
|
||||||
|
PA5.Mode=Full_Duplex_Master
|
||||||
|
PA5.Signal=SPI1_SCK
|
||||||
|
PA6.Mode=Full_Duplex_Master
|
||||||
|
PA6.Signal=SPI1_MISO
|
||||||
|
PA7.Mode=Full_Duplex_Master
|
||||||
|
PA7.Signal=SPI1_MOSI
|
||||||
PC13-TAMPER-RTC.GPIOParameters=GPIO_Label
|
PC13-TAMPER-RTC.GPIOParameters=GPIO_Label
|
||||||
PC13-TAMPER-RTC.GPIO_Label=LED
|
PC13-TAMPER-RTC.GPIO_Label=LED
|
||||||
PC13-TAMPER-RTC.Locked=true
|
PC13-TAMPER-RTC.Locked=true
|
||||||
@ -50,6 +103,40 @@ PCC.Seq0=0
|
|||||||
PCC.Series=STM32F1
|
PCC.Series=STM32F1
|
||||||
PCC.Temperature=25
|
PCC.Temperature=25
|
||||||
PCC.Vdd=3.3
|
PCC.Vdd=3.3
|
||||||
|
PD2.GPIOParameters=GPIO_Label
|
||||||
|
PD2.GPIO_Label=MOT2_CNT
|
||||||
|
PD2.Signal=S_TIM3_ETR
|
||||||
|
PE0.GPIOParameters=GPIO_Label
|
||||||
|
PE0.GPIO_Label=MOT3_CNT
|
||||||
|
PE0.Signal=S_TIM4_ETR
|
||||||
|
PE10.GPIOParameters=GPIO_Label
|
||||||
|
PE10.GPIO_Label=MOT2_DIR
|
||||||
|
PE10.Locked=true
|
||||||
|
PE10.Signal=GPIO_Output
|
||||||
|
PE11.GPIOParameters=GPIO_Label
|
||||||
|
PE11.GPIO_Label=MOT2_PWM
|
||||||
|
PE11.Signal=S_TIM1_CH2
|
||||||
|
PE12.GPIOParameters=GPIO_Label
|
||||||
|
PE12.GPIO_Label=MOT3_DIR
|
||||||
|
PE12.Locked=true
|
||||||
|
PE12.Signal=GPIO_Output
|
||||||
|
PE13.GPIOParameters=GPIO_Label
|
||||||
|
PE13.GPIO_Label=MOT3_PWM
|
||||||
|
PE13.Signal=S_TIM1_CH3
|
||||||
|
PE14.GPIOParameters=GPIO_Label
|
||||||
|
PE14.GPIO_Label=MOT4_PWM
|
||||||
|
PE14.Signal=S_TIM1_CH4
|
||||||
|
PE15.GPIOParameters=GPIO_Label
|
||||||
|
PE15.GPIO_Label=MOT4_DIR
|
||||||
|
PE15.Locked=true
|
||||||
|
PE15.Signal=GPIO_Output
|
||||||
|
PE8.GPIOParameters=GPIO_Label
|
||||||
|
PE8.GPIO_Label=MOT1_DIR
|
||||||
|
PE8.Locked=true
|
||||||
|
PE8.Signal=GPIO_Output
|
||||||
|
PE9.GPIOParameters=GPIO_Label
|
||||||
|
PE9.GPIO_Label=MOT1_PWM
|
||||||
|
PE9.Signal=S_TIM1_CH1
|
||||||
ProjectManager.AskForMigrate=true
|
ProjectManager.AskForMigrate=true
|
||||||
ProjectManager.BackupPrevious=false
|
ProjectManager.BackupPrevious=false
|
||||||
ProjectManager.CompilerOptimize=2
|
ProjectManager.CompilerOptimize=2
|
||||||
@ -72,7 +159,7 @@ ProjectManager.StackSize=0x400
|
|||||||
ProjectManager.TargetToolchain=SW4STM32
|
ProjectManager.TargetToolchain=SW4STM32
|
||||||
ProjectManager.ToolChainLocation=/home/wn/workspace-stm32/newcar/cube/newcar
|
ProjectManager.ToolChainLocation=/home/wn/workspace-stm32/newcar/cube/newcar
|
||||||
ProjectManager.UnderRoot=true
|
ProjectManager.UnderRoot=true
|
||||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false
|
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_SPI1_Init-SPI1-false,3-MX_TIM1_Init-TIM1-false,4-MX_TIM2_Init-TIM2-false,5-MX_TIM3_Init-TIM3-false,6-MX_TIM4_Init-TIM4-false,7-MX_TIM8_Init-TIM8-false
|
||||||
RCC.ADCFreqValue=36000000
|
RCC.ADCFreqValue=36000000
|
||||||
RCC.AHBFreq_Value=72000000
|
RCC.AHBFreq_Value=72000000
|
||||||
RCC.APB1CLKDivider=RCC_HCLK_DIV2
|
RCC.APB1CLKDivider=RCC_HCLK_DIV2
|
||||||
@ -100,6 +187,42 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
|||||||
RCC.TimSysFreq_Value=72000000
|
RCC.TimSysFreq_Value=72000000
|
||||||
RCC.USBFreq_Value=72000000
|
RCC.USBFreq_Value=72000000
|
||||||
RCC.VCOOutput2Freq_Value=8000000
|
RCC.VCOOutput2Freq_Value=8000000
|
||||||
|
SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
|
||||||
|
SH.S_TIM1_CH1.ConfNb=1
|
||||||
|
SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2
|
||||||
|
SH.S_TIM1_CH2.ConfNb=1
|
||||||
|
SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3
|
||||||
|
SH.S_TIM1_CH3.ConfNb=1
|
||||||
|
SH.S_TIM1_CH4.0=TIM1_CH4,PWM Generation4 CH4
|
||||||
|
SH.S_TIM1_CH4.ConfNb=1
|
||||||
|
SH.S_TIM2_CH1_ETR.0=TIM2_ETR,TriggerSource_ETR
|
||||||
|
SH.S_TIM2_CH1_ETR.ConfNb=1
|
||||||
|
SH.S_TIM3_ETR.0=TIM3_ETR,TriggerSource_ETR
|
||||||
|
SH.S_TIM3_ETR.ConfNb=1
|
||||||
|
SH.S_TIM4_ETR.0=TIM4_ETR,TriggerSource_ETR
|
||||||
|
SH.S_TIM4_ETR.ConfNb=1
|
||||||
|
SH.S_TIM8_ETR.0=TIM8_ETR,TriggerSource_ETR
|
||||||
|
SH.S_TIM8_ETR.ConfNb=1
|
||||||
|
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16
|
||||||
|
SPI1.CLKPhase=SPI_PHASE_2EDGE
|
||||||
|
SPI1.CLKPolarity=SPI_POLARITY_HIGH
|
||||||
|
SPI1.CalculateBaudRate=4.5 MBits/s
|
||||||
|
SPI1.IPParameters=Mode,BaudRatePrescaler,CalculateBaudRate,CLKPhase,CLKPolarity
|
||||||
|
SPI1.Mode=SPI_MODE_MASTER
|
||||||
|
TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
||||||
|
TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||||
|
TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
|
||||||
|
TIM1.IPParameters=Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4
|
||||||
VP_SYS_VS_Systick.Mode=SysTick
|
VP_SYS_VS_Systick.Mode=SysTick
|
||||||
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
||||||
|
VP_TIM1_VS_ClockSourceINT.Mode=Internal
|
||||||
|
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
|
||||||
|
VP_TIM2_VS_ControllerModeClock.Mode=Clock Mode
|
||||||
|
VP_TIM2_VS_ControllerModeClock.Signal=TIM2_VS_ControllerModeClock
|
||||||
|
VP_TIM3_VS_ControllerModeClock.Mode=Clock Mode
|
||||||
|
VP_TIM3_VS_ControllerModeClock.Signal=TIM3_VS_ControllerModeClock
|
||||||
|
VP_TIM4_VS_ControllerModeClock.Mode=Clock Mode
|
||||||
|
VP_TIM4_VS_ControllerModeClock.Signal=TIM4_VS_ControllerModeClock
|
||||||
|
VP_TIM8_VS_ControllerModeClock.Mode=Clock Mode
|
||||||
|
VP_TIM8_VS_ControllerModeClock.Signal=TIM8_VS_ControllerModeClock
|
||||||
board=newcar
|
board=newcar
|
||||||
|
BIN
cube/newcar/newcar.pdf
Normal file
BIN
cube/newcar/newcar.pdf
Normal file
Binary file not shown.
84
cube/newcar/newcar.txt
Normal file
84
cube/newcar/newcar.txt
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
Configuration newcar
|
||||||
|
STM32CubeMX 4.16.1
|
||||||
|
Date 03/31/2018
|
||||||
|
MCU STM32F103VCTx
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PERIPHERALS MODES FUNCTIONS PINS
|
||||||
|
RCC Crystal/Ceramic Resonator RCC_OSC_IN OSC_IN
|
||||||
|
RCC Crystal/Ceramic Resonator RCC_OSC_OUT OSC_OUT
|
||||||
|
SPI1 Full-Duplex Master SPI1_MISO PA6
|
||||||
|
SPI1 Full-Duplex Master SPI1_MOSI PA7
|
||||||
|
SPI1 Full-Duplex Master SPI1_SCK PA5
|
||||||
|
SYS Serial Wire SYS_JTCK-SWCLK PA14
|
||||||
|
SYS Serial Wire SYS_JTMS-SWDIO PA13
|
||||||
|
SYS SysTick SYS_VS_Systick VP_SYS_VS_Systick
|
||||||
|
TIM1 Internal Clock TIM1_VS_ClockSourceINT VP_TIM1_VS_ClockSourceINT
|
||||||
|
TIM1 PWM Generation CH1 TIM1_CH1 PE9
|
||||||
|
TIM1 PWM Generation CH2 TIM1_CH2 PE11
|
||||||
|
TIM1 PWM Generation CH3 TIM1_CH3 PE13
|
||||||
|
TIM1 PWM Generation CH4 TIM1_CH4 PE14
|
||||||
|
TIM2 External Clock Mode 1 TIM2_VS_ControllerModeClock VP_TIM2_VS_ControllerModeClock
|
||||||
|
TIM2 ETR1 TIM2_ETR PA15
|
||||||
|
TIM3 External Clock Mode 1 TIM3_VS_ControllerModeClock VP_TIM3_VS_ControllerModeClock
|
||||||
|
TIM3 ETR1 TIM3_ETR PD2
|
||||||
|
TIM4 External Clock Mode 1 TIM4_VS_ControllerModeClock VP_TIM4_VS_ControllerModeClock
|
||||||
|
TIM4 ETR1 TIM4_ETR PE0
|
||||||
|
TIM8 External Clock Mode 1 TIM8_VS_ControllerModeClock VP_TIM8_VS_ControllerModeClock
|
||||||
|
TIM8 ETR1 TIM8_ETR PA0-WKUP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Pin Nb PINs FUNCTIONs LABELs
|
||||||
|
7 PC13-TAMPER-RTC GPIO_Output LED
|
||||||
|
12 OSC_IN RCC_OSC_IN
|
||||||
|
13 OSC_OUT RCC_OSC_OUT
|
||||||
|
23 PA0-WKUP TIM8_ETR MOT4_CNT
|
||||||
|
24 PA1 GPIO_Output OLED_DC
|
||||||
|
25 PA2 GPIO_Output OLED_RST
|
||||||
|
26 PA3 GPIO_Output OLED_CS
|
||||||
|
30 PA5 SPI1_SCK
|
||||||
|
31 PA6 SPI1_MISO
|
||||||
|
32 PA7 SPI1_MOSI
|
||||||
|
39 PE8 GPIO_Output MOT1_DIR
|
||||||
|
40 PE9 TIM1_CH1 MOT1_PWM
|
||||||
|
41 PE10 GPIO_Output MOT2_DIR
|
||||||
|
42 PE11 TIM1_CH2 MOT2_PWM
|
||||||
|
43 PE12 GPIO_Output MOT3_DIR
|
||||||
|
44 PE13 TIM1_CH3 MOT3_PWM
|
||||||
|
45 PE14 TIM1_CH4 MOT4_PWM
|
||||||
|
46 PE15 GPIO_Output MOT4_DIR
|
||||||
|
72 PA13 SYS_JTMS-SWDIO
|
||||||
|
76 PA14 SYS_JTCK-SWCLK
|
||||||
|
77 PA15 TIM2_ETR MOT1_CNT
|
||||||
|
83 PD2 TIM3_ETR MOT2_CNT
|
||||||
|
97 PE0 TIM4_ETR MOT3_CNT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SOFTWARE PROJECT
|
||||||
|
|
||||||
|
Project Settings :
|
||||||
|
Project Name : newcar
|
||||||
|
Project Folder : /home/wn/workspace-stm32/newcar/cube/newcar
|
||||||
|
Toolchain / IDE : SW4STM32
|
||||||
|
Firmware Package Name and Version : STM32Cube FW_F1 V1.4.0
|
||||||
|
|
||||||
|
|
||||||
|
Code Generation Settings :
|
||||||
|
STM32Cube Firmware Library Package : Copy only the necessary library files
|
||||||
|
Generate peripheral initialization as a pair of '.c/.h' files per peripherals : No
|
||||||
|
Backup previously generated files when re-generating : No
|
||||||
|
Delete previously generated files when not re-generated : Yes
|
||||||
|
Set all free pins as analog (to optimize the power consumption) : No
|
||||||
|
|
||||||
|
|
||||||
|
Toolchains Settings :
|
||||||
|
Compiler Optimizations : Balanced Size/Speed
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -43,6 +43,36 @@
|
|||||||
|
|
||||||
#define LED_Pin GPIO_PIN_13
|
#define LED_Pin GPIO_PIN_13
|
||||||
#define LED_GPIO_Port GPIOC
|
#define LED_GPIO_Port GPIOC
|
||||||
|
#define MOT4_CNT_Pin GPIO_PIN_0
|
||||||
|
#define MOT4_CNT_GPIO_Port GPIOA
|
||||||
|
#define OLED_DC_Pin GPIO_PIN_1
|
||||||
|
#define OLED_DC_GPIO_Port GPIOA
|
||||||
|
#define OLED_RST_Pin GPIO_PIN_2
|
||||||
|
#define OLED_RST_GPIO_Port GPIOA
|
||||||
|
#define OLED_CS_Pin GPIO_PIN_3
|
||||||
|
#define OLED_CS_GPIO_Port GPIOA
|
||||||
|
#define MOT1_DIR_Pin GPIO_PIN_8
|
||||||
|
#define MOT1_DIR_GPIO_Port GPIOE
|
||||||
|
#define MOT1_PWM_Pin GPIO_PIN_9
|
||||||
|
#define MOT1_PWM_GPIO_Port GPIOE
|
||||||
|
#define MOT2_DIR_Pin GPIO_PIN_10
|
||||||
|
#define MOT2_DIR_GPIO_Port GPIOE
|
||||||
|
#define MOT2_PWM_Pin GPIO_PIN_11
|
||||||
|
#define MOT2_PWM_GPIO_Port GPIOE
|
||||||
|
#define MOT3_DIR_Pin GPIO_PIN_12
|
||||||
|
#define MOT3_DIR_GPIO_Port GPIOE
|
||||||
|
#define MOT3_PWM_Pin GPIO_PIN_13
|
||||||
|
#define MOT3_PWM_GPIO_Port GPIOE
|
||||||
|
#define MOT4_PWM_Pin GPIO_PIN_14
|
||||||
|
#define MOT4_PWM_GPIO_Port GPIOE
|
||||||
|
#define MOT4_DIR_Pin GPIO_PIN_15
|
||||||
|
#define MOT4_DIR_GPIO_Port GPIOE
|
||||||
|
#define MOT1_CNT_Pin GPIO_PIN_15
|
||||||
|
#define MOT1_CNT_GPIO_Port GPIOA
|
||||||
|
#define MOT2_CNT_Pin GPIO_PIN_2
|
||||||
|
#define MOT2_CNT_GPIO_Port GPIOD
|
||||||
|
#define MOT3_CNT_Pin GPIO_PIN_0
|
||||||
|
#define MOT3_CNT_GPIO_Port GPIOE
|
||||||
/* USER CODE BEGIN Private defines */
|
/* USER CODE BEGIN Private defines */
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
/* USER CODE END Private defines */
|
||||||
|
@ -75,9 +75,9 @@
|
|||||||
/*#define HAL_SD_MODULE_ENABLED */
|
/*#define HAL_SD_MODULE_ENABLED */
|
||||||
/*#define HAL_SDRAM_MODULE_ENABLED */
|
/*#define HAL_SDRAM_MODULE_ENABLED */
|
||||||
/*#define HAL_SMARTCARD_MODULE_ENABLED */
|
/*#define HAL_SMARTCARD_MODULE_ENABLED */
|
||||||
/*#define HAL_SPI_MODULE_ENABLED */
|
#define HAL_SPI_MODULE_ENABLED
|
||||||
/*#define HAL_SRAM_MODULE_ENABLED */
|
/*#define HAL_SRAM_MODULE_ENABLED */
|
||||||
/*#define HAL_TIM_MODULE_ENABLED */
|
#define HAL_TIM_MODULE_ENABLED
|
||||||
/*#define HAL_UART_MODULE_ENABLED */
|
/*#define HAL_UART_MODULE_ENABLED */
|
||||||
/*#define HAL_USART_MODULE_ENABLED */
|
/*#define HAL_USART_MODULE_ENABLED */
|
||||||
/*#define HAL_WWDG_MODULE_ENABLED */
|
/*#define HAL_WWDG_MODULE_ENABLED */
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
#include "led.h"
|
#include "led.h"
|
||||||
|
#include "oled.h"
|
||||||
|
|
||||||
|
|
||||||
void my_setup_1() {
|
void my_setup_1() {
|
||||||
@ -43,6 +43,7 @@ void my_errorHandler() {
|
|||||||
|
|
||||||
void my_setup_2() {
|
void my_setup_2() {
|
||||||
blinkInit();
|
blinkInit();
|
||||||
|
LED_P8x16Str(0, 0, "Hallo");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
226
my_src/oled-fonts.h
Normal file
226
my_src/oled-fonts.h
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
/*
|
||||||
|
* oled-fonts.h
|
||||||
|
*
|
||||||
|
* Created on: May 29, 2017
|
||||||
|
* Author: wn
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OLED_FONTS_H_
|
||||||
|
#define OLED_FONTS_H_
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Code found at http://www.instructables.com/id/How-to-use-OLED-display-arduino-module/
|
||||||
|
* Thank you very much!
|
||||||
|
* Adapted from Arduino to STM32 HAL by wollud1969
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const unsigned char F6x8[][6] =
|
||||||
|
{
|
||||||
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
|
||||||
|
{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
|
||||||
|
{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
|
||||||
|
{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
|
||||||
|
{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
|
||||||
|
{ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %
|
||||||
|
{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
|
||||||
|
{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
|
||||||
|
{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
|
||||||
|
{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
|
||||||
|
{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
|
||||||
|
{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
|
||||||
|
{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,
|
||||||
|
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
|
||||||
|
{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
|
||||||
|
{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
|
||||||
|
{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
|
||||||
|
{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
|
||||||
|
{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
|
||||||
|
{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
|
||||||
|
{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
|
||||||
|
{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
|
||||||
|
{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
|
||||||
|
{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
|
||||||
|
{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
|
||||||
|
{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
|
||||||
|
{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
|
||||||
|
{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
|
||||||
|
{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
|
||||||
|
{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
|
||||||
|
{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
|
||||||
|
{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
|
||||||
|
{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
|
||||||
|
{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A
|
||||||
|
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
|
||||||
|
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
|
||||||
|
{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
|
||||||
|
{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
|
||||||
|
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
|
||||||
|
{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
|
||||||
|
{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
|
||||||
|
{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
|
||||||
|
{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
|
||||||
|
{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
|
||||||
|
{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
|
||||||
|
{ 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
|
||||||
|
{ 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
|
||||||
|
{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
|
||||||
|
{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
|
||||||
|
{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
|
||||||
|
{ 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
|
||||||
|
{ 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
|
||||||
|
{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
|
||||||
|
{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
|
||||||
|
{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
|
||||||
|
{ 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
|
||||||
|
{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
|
||||||
|
{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
|
||||||
|
{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
|
||||||
|
{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ 91
|
||||||
|
{ 0x00, 0x02, 0x04 ,0x08, 0x10, 0x20 }, // \92
|
||||||
|
{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
|
||||||
|
{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
|
||||||
|
{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
|
||||||
|
{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
|
||||||
|
{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
|
||||||
|
{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
|
||||||
|
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
|
||||||
|
{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
|
||||||
|
{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
|
||||||
|
{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
|
||||||
|
{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g
|
||||||
|
{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
|
||||||
|
{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
|
||||||
|
{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j
|
||||||
|
{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
|
||||||
|
{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
|
||||||
|
{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
|
||||||
|
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
|
||||||
|
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
|
||||||
|
{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p
|
||||||
|
{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q
|
||||||
|
{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
|
||||||
|
{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
|
||||||
|
{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
|
||||||
|
{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
|
||||||
|
{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
|
||||||
|
{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
|
||||||
|
{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
|
||||||
|
{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y
|
||||||
|
{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
|
||||||
|
{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } // horiz lines
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const unsigned char F8X16[]=
|
||||||
|
{
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
|
||||||
|
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//!1
|
||||||
|
0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"2
|
||||||
|
0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//#3
|
||||||
|
0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$4
|
||||||
|
0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//%5
|
||||||
|
0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//&6
|
||||||
|
0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//'7
|
||||||
|
0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//(8
|
||||||
|
0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//)9
|
||||||
|
0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//*10
|
||||||
|
0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+11
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//,12
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//-13
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//.14
|
||||||
|
0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,///15
|
||||||
|
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//016
|
||||||
|
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//117
|
||||||
|
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//218
|
||||||
|
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//319
|
||||||
|
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//420
|
||||||
|
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//521
|
||||||
|
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//622
|
||||||
|
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//723
|
||||||
|
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//824
|
||||||
|
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//925
|
||||||
|
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//:26
|
||||||
|
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//;27
|
||||||
|
0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//<28
|
||||||
|
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//=29
|
||||||
|
0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//>30
|
||||||
|
0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//?31
|
||||||
|
0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@32
|
||||||
|
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A33
|
||||||
|
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B34
|
||||||
|
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C35
|
||||||
|
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D36
|
||||||
|
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E37
|
||||||
|
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F38
|
||||||
|
0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G39
|
||||||
|
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H40
|
||||||
|
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I41
|
||||||
|
0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J42
|
||||||
|
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K43
|
||||||
|
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L44
|
||||||
|
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M45
|
||||||
|
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N46
|
||||||
|
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O47
|
||||||
|
0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P48
|
||||||
|
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q49
|
||||||
|
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R50
|
||||||
|
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S51
|
||||||
|
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T52
|
||||||
|
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U53
|
||||||
|
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V54
|
||||||
|
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W55
|
||||||
|
0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X56
|
||||||
|
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y57
|
||||||
|
0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z58
|
||||||
|
0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[59
|
||||||
|
0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\60
|
||||||
|
0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//]61
|
||||||
|
0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^62
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_63
|
||||||
|
0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//`64
|
||||||
|
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a65
|
||||||
|
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b66
|
||||||
|
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c67
|
||||||
|
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d68
|
||||||
|
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e69
|
||||||
|
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f70
|
||||||
|
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g71
|
||||||
|
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h72
|
||||||
|
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i73
|
||||||
|
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j74
|
||||||
|
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k75
|
||||||
|
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l76
|
||||||
|
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m77
|
||||||
|
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n78
|
||||||
|
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o79
|
||||||
|
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p80
|
||||||
|
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q81
|
||||||
|
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r82
|
||||||
|
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s83
|
||||||
|
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t84
|
||||||
|
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//unsigned char5
|
||||||
|
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v86
|
||||||
|
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w87
|
||||||
|
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x88
|
||||||
|
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y89
|
||||||
|
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z90
|
||||||
|
0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{91
|
||||||
|
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//|92
|
||||||
|
0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//}93
|
||||||
|
0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~94
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* OLED_FONTS_H_ */
|
525
my_src/oled.c
Normal file
525
my_src/oled.c
Normal file
@ -0,0 +1,525 @@
|
|||||||
|
/*
|
||||||
|
* Code found at http://www.instructables.com/id/How-to-use-OLED-display-arduino-module/
|
||||||
|
* Thank you very much!
|
||||||
|
* Adapted from Arduino to STM32 HAL by wollud1969
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "oled.h"
|
||||||
|
#include "oled-fonts.h"
|
||||||
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define HIGH GPIO_PIN_SET
|
||||||
|
#define LOW GPIO_PIN_RESET
|
||||||
|
|
||||||
|
|
||||||
|
// DO: SPI Clk, D1: SPI Data
|
||||||
|
|
||||||
|
|
||||||
|
extern SPI_HandleTypeDef hspi1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void __LEDPIN_RST(GPIO_PinState v) {
|
||||||
|
HAL_GPIO_WritePin(OLED_RST_GPIO_Port, OLED_RST_Pin, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __LEDPIN_DC(GPIO_PinState v) {
|
||||||
|
HAL_GPIO_WritePin(OLED_DC_GPIO_Port, OLED_DC_Pin, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __LEDPIN_CS(GPIO_PinState v) {
|
||||||
|
HAL_GPIO_WritePin(OLED_CS_GPIO_Port, OLED_CS_Pin, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LED_WrDat(unsigned char data)
|
||||||
|
{
|
||||||
|
__LEDPIN_CS(LOW);
|
||||||
|
__LEDPIN_DC(HIGH);
|
||||||
|
|
||||||
|
HAL_SPI_Transmit(&hspi1, &data, 1, 0);
|
||||||
|
|
||||||
|
__LEDPIN_CS(HIGH);
|
||||||
|
}
|
||||||
|
void LED_WrCmd(unsigned char cmd)
|
||||||
|
{
|
||||||
|
__LEDPIN_CS(LOW);
|
||||||
|
__LEDPIN_DC(LOW);
|
||||||
|
|
||||||
|
HAL_SPI_Transmit(&hspi1, &cmd, 1, 0);
|
||||||
|
|
||||||
|
__LEDPIN_CS(HIGH);
|
||||||
|
}
|
||||||
|
void LED_Set_Pos(unsigned char x, unsigned char y)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xb0+y);
|
||||||
|
LED_WrCmd(((x&0xf0)>>4)|0x10);
|
||||||
|
LED_WrCmd((x&0x0f)|0x00);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LED_Fill(unsigned char bmp_data)
|
||||||
|
{
|
||||||
|
unsigned char y,x;
|
||||||
|
|
||||||
|
for(y=0;y<8;y++)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xb0+y);
|
||||||
|
LED_WrCmd(0x00);
|
||||||
|
LED_WrCmd(0x10);
|
||||||
|
for(x=0;x<128;x++)
|
||||||
|
LED_WrDat(bmp_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void LED_CLS(void)
|
||||||
|
{
|
||||||
|
unsigned char y,x;
|
||||||
|
for(y=0;y<8;y++)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xb0+y);
|
||||||
|
LED_WrCmd(0x00);
|
||||||
|
LED_WrCmd(0x10);
|
||||||
|
for(x=0;x<128;x++)
|
||||||
|
LED_WrDat(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LED_DLY_ms(unsigned int ms)
|
||||||
|
{
|
||||||
|
uint32_t start = HAL_GetTick();
|
||||||
|
while (HAL_GetTick() < start + ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetStartColumn(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0x00+d%16); // Set Lower Column Start Address for Page Addressing Mode
|
||||||
|
// Default => 0x00
|
||||||
|
LED_WrCmd(0x10+d/16); // Set Higher Column Start Address for Page Addressing Mode
|
||||||
|
// Default => 0x10
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetAddressingMode(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0x20); // Set Memory Addressing Mode
|
||||||
|
LED_WrCmd(d); // Default => 0x02
|
||||||
|
// 0x00 => Horizontal Addressing Mode
|
||||||
|
// 0x01 => Vertical Addressing Mode
|
||||||
|
// 0x02 => Page Addressing Mode
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetColumnAddress(unsigned char a, unsigned char b)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0x21); // Set Column Address
|
||||||
|
LED_WrCmd(a); // Default => 0x00 (Column Start Address)
|
||||||
|
LED_WrCmd(b); // Default => 0x7F (Column End Address)
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetPageAddress(unsigned char a, unsigned char b)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0x22); // Set Page Address
|
||||||
|
LED_WrCmd(a); // Default => 0x00 (Page Start Address)
|
||||||
|
LED_WrCmd(b); // Default => 0x07 (Page End Address)
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetStartLine(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0x40|d); // Set Display Start Line
|
||||||
|
// Default => 0x40 (0x00)
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetContrastControl(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0x81); // Set Contrast Control
|
||||||
|
LED_WrCmd(d); // Default => 0x7F
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Charge_Pump(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0x8D); // Set Charge Pump
|
||||||
|
LED_WrCmd(0x10|d); // Default => 0x10
|
||||||
|
// 0x10 (0x00) => Disable Charge Pump
|
||||||
|
// 0x14 (0x04) => Enable Charge Pump
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Segment_Remap(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xA0|d); // Set Segment Re-Map
|
||||||
|
// Default => 0xA0
|
||||||
|
// 0xA0 (0x00) => Column Address 0 Mapped to SEG0
|
||||||
|
// 0xA1 (0x01) => Column Address 0 Mapped to SEG127
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Entire_Display(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xA4|d); // Set Entire Display On / Off
|
||||||
|
// Default => 0xA4
|
||||||
|
// 0xA4 (0x00) => Normal Display
|
||||||
|
// 0xA5 (0x01) => Entire Display On
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Inverse_Display(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xA6|d); // Set Inverse Display On/Off
|
||||||
|
// Default => 0xA6
|
||||||
|
// 0xA6 (0x00) => Normal Display
|
||||||
|
// 0xA7 (0x01) => Inverse Display On
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Multiplex_Ratio(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xA8); // Set Multiplex Ratio
|
||||||
|
LED_WrCmd(d); // Default => 0x3F (1/64 Duty)
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Display_On_Off(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xAE|d); // Set Display On/Off
|
||||||
|
// Default => 0xAE
|
||||||
|
// 0xAE (0x00) => Display Off
|
||||||
|
// 0xAF (0x01) => Display On
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetStartPage(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xB0|d); // Set Page Start Address for Page Addressing Mode
|
||||||
|
// Default => 0xB0 (0x00)
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Common_Remap(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xC0|d); // Set COM Output Scan Direction
|
||||||
|
// Default => 0xC0
|
||||||
|
// 0xC0 (0x00) => Scan from COM0 to 63
|
||||||
|
// 0xC8 (0x08) => Scan from COM63 to 0
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Display_Offset(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xD3); // Set Display Offset
|
||||||
|
LED_WrCmd(d); // Default => 0x00
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Display_Clock(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xD5); // Set Display Clock Divide Ratio / Oscillator Frequency
|
||||||
|
LED_WrCmd(d); // Default => 0x80
|
||||||
|
// D[3:0] => Display Clock Divider
|
||||||
|
// D[7:4] => Oscillator Frequency
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Precharge_Period(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xD9); // Set Pre-Charge Period
|
||||||
|
LED_WrCmd(d); // Default => 0x22 (2 Display Clocks [Phase 2] / 2 Display Clocks [Phase 1])
|
||||||
|
// D[3:0] => Phase 1 Period in 1~15 Display Clocks
|
||||||
|
// D[7:4] => Phase 2 Period in 1~15 Display Clocks
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_Common_Config(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xDA); // Set COM Pins Hardware Configuration
|
||||||
|
LED_WrCmd(0x02|d); // Default => 0x12 (0x10)
|
||||||
|
// Alternative COM Pin Configuration
|
||||||
|
// Disable COM Left/Right Re-Map
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_VCOMH(unsigned char d)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xDB); // Set VCOMH Deselect Level
|
||||||
|
LED_WrCmd(d); // Default => 0x20 (0.77*VCC)
|
||||||
|
}
|
||||||
|
|
||||||
|
void Set_NOP(void)
|
||||||
|
{
|
||||||
|
LED_WrCmd(0xE3); // Command for No Operation
|
||||||
|
}
|
||||||
|
|
||||||
|
void oledInit(void)
|
||||||
|
{
|
||||||
|
// LEDPIN_Init();
|
||||||
|
// LED_PORT=0X0F;
|
||||||
|
//LED_SCLH;;;
|
||||||
|
//LED_RSTL;;;
|
||||||
|
//digitalWrite(SCL_PIN,HIGH);;;
|
||||||
|
__LEDPIN_RST(LOW);
|
||||||
|
// for(i=0;i<100;i++)asm("nop");
|
||||||
|
LED_DLY_ms(50);
|
||||||
|
//LED_RSTH;;;
|
||||||
|
__LEDPIN_RST(HIGH);
|
||||||
|
|
||||||
|
Set_Display_On_Off(0x00); // Display Off (0x00/0x01)
|
||||||
|
Set_Display_Clock(0x80); // Set Clock as 100 Frames/Sec
|
||||||
|
Set_Multiplex_Ratio(0x3F); // 1/64 Duty (0x0F~0x3F)
|
||||||
|
Set_Display_Offset(0x00); // Shift Mapping RAM Counter (0x00~0x3F)
|
||||||
|
SetStartLine(0x00); // Set Mapping RAM Display Start Line (0x00~0x3F)
|
||||||
|
Set_Charge_Pump(0x04); // Enable Embedded DC/DC Converter (0x00/0x04)
|
||||||
|
SetAddressingMode(0x02); // Set Page Addressing Mode (0x00/0x01/0x02)
|
||||||
|
Set_Segment_Remap(0x01); // Set SEG/Column Mapping
|
||||||
|
Set_Common_Remap(0x08); // Set COM/Row Scan Direction
|
||||||
|
Set_Common_Config(0x10); // Set Sequential Configuration (0x00/0x10)
|
||||||
|
SetContrastControl(0xCF); // Set SEG Output Current
|
||||||
|
Set_Precharge_Period(0xF1); // Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
|
||||||
|
Set_VCOMH(0x40); // Set VCOM Deselect Level
|
||||||
|
Set_Entire_Display(0x00); // Disable Entire Display On (0x00/0x01)
|
||||||
|
Set_Inverse_Display(0x00); // Disable Inverse Display On (0x00/0x01)
|
||||||
|
Set_Display_On_Off(0x01); // Display On (0x00/0x01)
|
||||||
|
LED_Fill(0x00); //clear all
|
||||||
|
LED_Set_Pos(0,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LED_P6x8Char(unsigned char x,unsigned char y,unsigned char ch)
|
||||||
|
{
|
||||||
|
unsigned char c=0,i=0;
|
||||||
|
|
||||||
|
c =ch-32;
|
||||||
|
if(x>122)
|
||||||
|
{
|
||||||
|
x=0;
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
LED_Set_Pos(x,y);
|
||||||
|
for(i=0;i<6;i++)
|
||||||
|
{
|
||||||
|
LED_WrDat(F6x8[c][i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LED_P6x8Str(unsigned char x,unsigned char y,char ch[])
|
||||||
|
{
|
||||||
|
unsigned char c=0,i=0,j=0;
|
||||||
|
while (ch[j]!='\0')
|
||||||
|
{
|
||||||
|
c =ch[j]-32;
|
||||||
|
if(x>126)
|
||||||
|
{
|
||||||
|
x=0;
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
LED_Set_Pos(x,y);
|
||||||
|
for(i=0;i<6;i++)
|
||||||
|
{
|
||||||
|
LED_WrDat(F6x8[c][i]);
|
||||||
|
}
|
||||||
|
x+=6;
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LED_P8x16Str(unsigned char x,unsigned char y,char ch[])
|
||||||
|
{
|
||||||
|
unsigned char c=0,i=0,j=0;
|
||||||
|
while (ch[j]!='\0')
|
||||||
|
{
|
||||||
|
c =ch[j]-32;
|
||||||
|
if(x>120)
|
||||||
|
{
|
||||||
|
x=0;
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
LED_Set_Pos(x,y);
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
LED_WrDat(F8X16[(c<<4)+i]);
|
||||||
|
}
|
||||||
|
LED_Set_Pos(x,y+1);
|
||||||
|
for(i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
LED_WrDat(F8X16[(c<<4)+i+8]);
|
||||||
|
}
|
||||||
|
x+=8;
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void LED_PrintBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char bmp[])
|
||||||
|
{
|
||||||
|
int ii=0;
|
||||||
|
unsigned char x,y;
|
||||||
|
for(y=y0;y<=y1;y++)
|
||||||
|
{
|
||||||
|
LED_Set_Pos(x0,y);
|
||||||
|
for(x=x0;x<x1;x++)
|
||||||
|
{
|
||||||
|
LED_WrDat(bmp[ii++]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//void LED_PrintValueC(unsigned char x, unsigned char y, char data)
|
||||||
|
//{
|
||||||
|
// unsigned char i,j,k;
|
||||||
|
// if(data < 0)
|
||||||
|
// {
|
||||||
|
// LED_P6x8Char(x,y,'-');
|
||||||
|
// data = - data;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// LED_P6x8Char(x,y,'+');
|
||||||
|
// }
|
||||||
|
// i = data/100;
|
||||||
|
// j = (data%100)/10;
|
||||||
|
// k = data%10;
|
||||||
|
// LED_P6x8Char(x+6,y,i+48);
|
||||||
|
// LED_P6x8Char(x+12,y,j+48);
|
||||||
|
// LED_P6x8Char(x+18,y,k+48);
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//void LED_PrintValueI(unsigned char x, unsigned char y, int data)
|
||||||
|
//{
|
||||||
|
// unsigned char i,j,k,l,m;
|
||||||
|
// if(data < 0)
|
||||||
|
// {
|
||||||
|
// LED_P6x8Char(x,y,'-');
|
||||||
|
// data = - data;
|
||||||
|
// }
|
||||||
|
//// else
|
||||||
|
//// {
|
||||||
|
//// LED_P6x8Char(x,y,'+');
|
||||||
|
//// }
|
||||||
|
//
|
||||||
|
// l = data/10000;
|
||||||
|
// m= (data%10000)/1000;
|
||||||
|
// i = (data%1000)/100;
|
||||||
|
// j = (data%100)/10;
|
||||||
|
// k = data%10;
|
||||||
|
//
|
||||||
|
// unsigned char c;
|
||||||
|
// c = (l == 0) ? ' ' : (l + 48); LED_P6x8Char(x+6,y,c);
|
||||||
|
// c = (m == 0 && l == 0) ? ' ' : (m + 48); LED_P6x8Char(x+12,y,c);
|
||||||
|
// c = (i == 0 && m == 0 && l == 0) ? ' ' : (i + 48); LED_P6x8Char(x+18,y,c);
|
||||||
|
// c = (j == 0 && i == 0 && m == 0 && l == 0) ? ' ' : (j + 48); LED_P6x8Char(x+24,y,c);
|
||||||
|
// LED_P6x8Char(x+30,y,k+48);
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//void LED_PrintValueFP(unsigned char x, unsigned char y, unsigned int data, unsigned char num)
|
||||||
|
//{
|
||||||
|
// unsigned char m,i,j,k;
|
||||||
|
// LED_P6x8Char(x, y, '.');
|
||||||
|
// m= data/1000;
|
||||||
|
// i = (data%1000)/100;
|
||||||
|
// j = (data%100)/10;
|
||||||
|
// k = data%10;
|
||||||
|
// switch(num)
|
||||||
|
// {
|
||||||
|
// case 1: LED_P6x8Char(x+6,y,k+48);
|
||||||
|
// break;
|
||||||
|
// case 2: LED_P6x8Char(x+6,y,j+48);
|
||||||
|
// LED_P6x8Char(x+12,y,k+48);
|
||||||
|
// break;
|
||||||
|
// case 3: LED_P6x8Char(x+6,y,i+48);
|
||||||
|
// LED_P6x8Char(x+12,y,j+48);
|
||||||
|
// LED_P6x8Char(x+18,y,k+48);
|
||||||
|
// break;
|
||||||
|
// case 4: LED_P6x8Char(x+6,y,m+48);
|
||||||
|
// LED_P6x8Char(x+12,y,i+48);
|
||||||
|
// LED_P6x8Char(x+18,y,j+48);
|
||||||
|
// LED_P6x8Char(x+24,y,k+48);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//void LED_PrintValueF(unsigned char x, unsigned char y, float data, unsigned char num)
|
||||||
|
//{
|
||||||
|
// unsigned char l,m,i,j,k;
|
||||||
|
// unsigned char databiti = 6;
|
||||||
|
// unsigned int tempdataui = 0;
|
||||||
|
// int tempdataii = (int)data;
|
||||||
|
// long int tempdatalp = (long int)((data - (int)data)*10000);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// if(data < 0.0000001) LED_P6x8Char(x, y,'-');
|
||||||
|
// else LED_P6x8Char(x, y,'+');
|
||||||
|
// if(tempdataii < 0)tempdataii = - tempdataii;
|
||||||
|
// tempdataui = tempdataii;
|
||||||
|
// l = tempdataui/10000;
|
||||||
|
// m= (tempdataui%10000)/1000;
|
||||||
|
// i = (tempdataui%1000)/100;
|
||||||
|
// j = (tempdataui%100)/10;
|
||||||
|
// k = tempdataui%10;
|
||||||
|
// if (l != 0)
|
||||||
|
// {
|
||||||
|
// LED_P6x8Char(x+6,y,l+48);
|
||||||
|
// LED_P6x8Char(x+12,y,m+48);
|
||||||
|
// LED_P6x8Char(x+18,y,i+48);
|
||||||
|
// LED_P6x8Char(x+24,y,j+48);
|
||||||
|
// LED_P6x8Char(x+30,y,k+48);
|
||||||
|
// }
|
||||||
|
// else if(m != 0)
|
||||||
|
// {
|
||||||
|
// databiti = 5;
|
||||||
|
// LED_P6x8Char(x+6,y,m+48);
|
||||||
|
// LED_P6x8Char(x+12,y,i+48);
|
||||||
|
// LED_P6x8Char(x+18,y,j+48);
|
||||||
|
// LED_P6x8Char(x+24,y,k+48);
|
||||||
|
// }
|
||||||
|
// else if(i != 0)
|
||||||
|
// {
|
||||||
|
// databiti = 4;
|
||||||
|
// LED_P6x8Char(x+6,y,i+48);
|
||||||
|
// LED_P6x8Char(x+12,y,j+48);
|
||||||
|
// LED_P6x8Char(x+18,y,k+48);
|
||||||
|
// }
|
||||||
|
// else if(j != 0)
|
||||||
|
// {
|
||||||
|
// databiti = 3;
|
||||||
|
// LED_P6x8Char(x+6,y,j+48);
|
||||||
|
// LED_P6x8Char(x+12,y,k+48);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// databiti = 2;
|
||||||
|
// LED_P6x8Char(x+6,y,k+48);
|
||||||
|
// }
|
||||||
|
// if(tempdatalp < 0)tempdatalp = - tempdatalp;
|
||||||
|
// switch(num)
|
||||||
|
// {
|
||||||
|
// case 0: break;
|
||||||
|
// case 1: LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 1000),num);break;
|
||||||
|
// case 2: LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 100),num);break;
|
||||||
|
// case 3: LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp / 10),num);break;
|
||||||
|
// case 4: LED_PrintValueFP(x + databiti * 6, y, (unsigned int)(tempdatalp),num);break;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
void LED_Cursor(unsigned char cursor_column, unsigned char cursor_row)
|
||||||
|
{
|
||||||
|
if(cursor_row != 0)
|
||||||
|
{
|
||||||
|
if(cursor_column == 1) LED_Set_Pos(0, cursor_row + 2);
|
||||||
|
else LED_Set_Pos(80 + (cursor_column - 2)*6, cursor_row + 2);
|
||||||
|
LED_WrDat(0xFF);
|
||||||
|
LED_WrDat(0xFF);
|
||||||
|
LED_WrDat(0xFF);
|
||||||
|
LED_WrDat(0xFF);
|
||||||
|
LED_WrDat(0xFF);
|
||||||
|
LED_WrDat(0xFF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
LEDPIN_Init();
|
||||||
|
LED_Init();
|
||||||
|
}
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
LED_P8x16Str(23,0,"welcome to");
|
||||||
|
LED_P8x16Str(40,2,"Smart");
|
||||||
|
LED_P8x16Str(20,4,"Prototyping");
|
||||||
|
}
|
||||||
|
#endif
|
37
my_src/oled.h
Normal file
37
my_src/oled.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* oled.h
|
||||||
|
*
|
||||||
|
* Created on: May 29, 2017
|
||||||
|
* Author: wn
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OLED_H_
|
||||||
|
#define OLED_H_
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Code found at http://www.instructables.com/id/How-to-use-OLED-display-arduino-module/
|
||||||
|
* Thank you very much!
|
||||||
|
* Adapted from Arduino to STM32 HAL by wollud1969
|
||||||
|
*/
|
||||||
|
|
||||||
|
void oledInit(void);
|
||||||
|
|
||||||
|
void LED_CLS(void);
|
||||||
|
void LED_Set_Pos(unsigned char x,unsigned char y);//Set the coordinate
|
||||||
|
void LED_WrDat(unsigned char data); //Write Data
|
||||||
|
void LED_P6x8Char(unsigned char x,unsigned char y,unsigned char ch);
|
||||||
|
void LED_P6x8Str(unsigned char x,unsigned char y,char ch[]);
|
||||||
|
void LED_P8x16Str(unsigned char x,unsigned char y,char ch[]);
|
||||||
|
|
||||||
|
void LED_PrintBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char bmp[]);
|
||||||
|
void LED_Fill(unsigned char dat);
|
||||||
|
//void LED_PrintValueC(unsigned char x, unsigned char y,char data);
|
||||||
|
//void LED_PrintValueI(unsigned char x, unsigned char y, int data);
|
||||||
|
//void LED_PrintValueF(unsigned char x, unsigned char y, float data, unsigned char num);
|
||||||
|
void LED_PrintEdge(void);
|
||||||
|
void LED_Cursor(unsigned char cursor_column, unsigned char cursor_row);
|
||||||
|
void LED_PrintLine(void);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* OLED_H_ */
|
291
src/main.c
291
src/main.c
@ -39,6 +39,13 @@
|
|||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
|
SPI_HandleTypeDef hspi1;
|
||||||
|
|
||||||
|
TIM_HandleTypeDef htim1;
|
||||||
|
TIM_HandleTypeDef htim2;
|
||||||
|
TIM_HandleTypeDef htim3;
|
||||||
|
TIM_HandleTypeDef htim4;
|
||||||
|
TIM_HandleTypeDef htim8;
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
/* USER CODE BEGIN PV */
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
@ -49,6 +56,15 @@
|
|||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
void Error_Handler(void);
|
void Error_Handler(void);
|
||||||
static void MX_GPIO_Init(void);
|
static void MX_GPIO_Init(void);
|
||||||
|
static void MX_SPI1_Init(void);
|
||||||
|
static void MX_TIM1_Init(void);
|
||||||
|
static void MX_TIM2_Init(void);
|
||||||
|
static void MX_TIM3_Init(void);
|
||||||
|
static void MX_TIM4_Init(void);
|
||||||
|
static void MX_TIM8_Init(void);
|
||||||
|
|
||||||
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE BEGIN PFP */
|
/* USER CODE BEGIN PFP */
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
/* Private function prototypes -----------------------------------------------*/
|
||||||
@ -77,6 +93,12 @@ int main(void)
|
|||||||
|
|
||||||
/* Initialize all configured peripherals */
|
/* Initialize all configured peripherals */
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
|
MX_SPI1_Init();
|
||||||
|
MX_TIM1_Init();
|
||||||
|
MX_TIM2_Init();
|
||||||
|
MX_TIM3_Init();
|
||||||
|
MX_TIM4_Init();
|
||||||
|
MX_TIM8_Init();
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
my_setup_2();
|
my_setup_2();
|
||||||
@ -135,6 +157,255 @@ void SystemClock_Config(void)
|
|||||||
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
|
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* SPI1 init function */
|
||||||
|
static void MX_SPI1_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
hspi1.Instance = SPI1;
|
||||||
|
hspi1.Init.Mode = SPI_MODE_MASTER;
|
||||||
|
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
|
||||||
|
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||||
|
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
|
||||||
|
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
|
||||||
|
hspi1.Init.NSS = SPI_NSS_SOFT;
|
||||||
|
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
|
||||||
|
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||||
|
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||||
|
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
||||||
|
hspi1.Init.CRCPolynomial = 10;
|
||||||
|
if (HAL_SPI_Init(&hspi1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM1 init function */
|
||||||
|
static void MX_TIM1_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim1.Instance = TIM1;
|
||||||
|
htim1.Init.Prescaler = 0;
|
||||||
|
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim1.Init.Period = 0;
|
||||||
|
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
htim1.Init.RepetitionCounter = 0;
|
||||||
|
if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
|
||||||
|
sBreakDeadTimeConfig.DeadTime = 0;
|
||||||
|
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
|
||||||
|
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
|
||||||
|
if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 0;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
|
||||||
|
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM2 init function */
|
||||||
|
static void MX_TIM2_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim2.Instance = TIM2;
|
||||||
|
htim2.Init.Prescaler = 0;
|
||||||
|
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim2.Init.Period = 0;
|
||||||
|
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim2, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM3 init function */
|
||||||
|
static void MX_TIM3_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim3.Instance = TIM3;
|
||||||
|
htim3.Init.Prescaler = 0;
|
||||||
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim3.Init.Period = 0;
|
||||||
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim3, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM4 init function */
|
||||||
|
static void MX_TIM4_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim4.Instance = TIM4;
|
||||||
|
htim4.Init.Prescaler = 0;
|
||||||
|
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim4.Init.Period = 0;
|
||||||
|
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim4, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM8 init function */
|
||||||
|
static void MX_TIM8_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim8.Instance = TIM8;
|
||||||
|
htim8.Init.Prescaler = 0;
|
||||||
|
htim8.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim8.Init.Period = 0;
|
||||||
|
htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
htim8.Init.RepetitionCounter = 0;
|
||||||
|
if (HAL_TIM_Base_Init(&htim8) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim8, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Configure pins as
|
/** Configure pins as
|
||||||
* Analog
|
* Analog
|
||||||
* Input
|
* Input
|
||||||
@ -150,16 +421,36 @@ static void MX_GPIO_Init(void)
|
|||||||
/* GPIO Ports Clock Enable */
|
/* GPIO Ports Clock Enable */
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(GPIOA, OLED_DC_Pin|OLED_RST_Pin|OLED_CS_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(GPIOE, MOT1_DIR_Pin|MOT2_DIR_Pin|MOT3_DIR_Pin|MOT4_DIR_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin : LED_Pin */
|
/*Configure GPIO pin : LED_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_Pin;
|
GPIO_InitStruct.Pin = LED_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pins : OLED_DC_Pin OLED_RST_Pin OLED_CS_Pin */
|
||||||
|
GPIO_InitStruct.Pin = OLED_DC_Pin|OLED_RST_Pin|OLED_CS_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pins : MOT1_DIR_Pin MOT2_DIR_Pin MOT3_DIR_Pin MOT4_DIR_Pin */
|
||||||
|
GPIO_InitStruct.Pin = MOT1_DIR_Pin|MOT2_DIR_Pin|MOT3_DIR_Pin|MOT4_DIR_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 4 */
|
/* USER CODE BEGIN 4 */
|
||||||
|
291
src/main.c-bak
291
src/main.c-bak
@ -38,6 +38,13 @@
|
|||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
|
SPI_HandleTypeDef hspi1;
|
||||||
|
|
||||||
|
TIM_HandleTypeDef htim1;
|
||||||
|
TIM_HandleTypeDef htim2;
|
||||||
|
TIM_HandleTypeDef htim3;
|
||||||
|
TIM_HandleTypeDef htim4;
|
||||||
|
TIM_HandleTypeDef htim8;
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
/* USER CODE BEGIN PV */
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
@ -48,6 +55,15 @@
|
|||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
void Error_Handler(void);
|
void Error_Handler(void);
|
||||||
static void MX_GPIO_Init(void);
|
static void MX_GPIO_Init(void);
|
||||||
|
static void MX_SPI1_Init(void);
|
||||||
|
static void MX_TIM1_Init(void);
|
||||||
|
static void MX_TIM2_Init(void);
|
||||||
|
static void MX_TIM3_Init(void);
|
||||||
|
static void MX_TIM4_Init(void);
|
||||||
|
static void MX_TIM8_Init(void);
|
||||||
|
|
||||||
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE BEGIN PFP */
|
/* USER CODE BEGIN PFP */
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
/* Private function prototypes -----------------------------------------------*/
|
||||||
@ -75,6 +91,12 @@ int main(void)
|
|||||||
|
|
||||||
/* Initialize all configured peripherals */
|
/* Initialize all configured peripherals */
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
|
MX_SPI1_Init();
|
||||||
|
MX_TIM1_Init();
|
||||||
|
MX_TIM2_Init();
|
||||||
|
MX_TIM3_Init();
|
||||||
|
MX_TIM4_Init();
|
||||||
|
MX_TIM8_Init();
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
|
||||||
@ -131,6 +153,255 @@ void SystemClock_Config(void)
|
|||||||
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
|
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* SPI1 init function */
|
||||||
|
static void MX_SPI1_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
hspi1.Instance = SPI1;
|
||||||
|
hspi1.Init.Mode = SPI_MODE_MASTER;
|
||||||
|
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
|
||||||
|
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||||
|
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
|
||||||
|
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
|
||||||
|
hspi1.Init.NSS = SPI_NSS_SOFT;
|
||||||
|
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
|
||||||
|
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||||
|
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||||
|
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
||||||
|
hspi1.Init.CRCPolynomial = 10;
|
||||||
|
if (HAL_SPI_Init(&hspi1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM1 init function */
|
||||||
|
static void MX_TIM1_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim1.Instance = TIM1;
|
||||||
|
htim1.Init.Prescaler = 0;
|
||||||
|
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim1.Init.Period = 0;
|
||||||
|
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
htim1.Init.RepetitionCounter = 0;
|
||||||
|
if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
|
||||||
|
sBreakDeadTimeConfig.DeadTime = 0;
|
||||||
|
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
|
||||||
|
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
|
||||||
|
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
|
||||||
|
if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 0;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
|
||||||
|
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM2 init function */
|
||||||
|
static void MX_TIM2_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim2.Instance = TIM2;
|
||||||
|
htim2.Init.Prescaler = 0;
|
||||||
|
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim2.Init.Period = 0;
|
||||||
|
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim2, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM3 init function */
|
||||||
|
static void MX_TIM3_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim3.Instance = TIM3;
|
||||||
|
htim3.Init.Prescaler = 0;
|
||||||
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim3.Init.Period = 0;
|
||||||
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim3, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM4 init function */
|
||||||
|
static void MX_TIM4_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim4.Instance = TIM4;
|
||||||
|
htim4.Init.Prescaler = 0;
|
||||||
|
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim4.Init.Period = 0;
|
||||||
|
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim4, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM8 init function */
|
||||||
|
static void MX_TIM8_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_SlaveConfigTypeDef sSlaveConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
|
||||||
|
htim8.Instance = TIM8;
|
||||||
|
htim8.Init.Prescaler = 0;
|
||||||
|
htim8.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim8.Init.Period = 0;
|
||||||
|
htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
htim8.Init.RepetitionCounter = 0;
|
||||||
|
if (HAL_TIM_Base_Init(&htim8) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
|
||||||
|
sSlaveConfig.InputTrigger = TIM_TS_ETRF;
|
||||||
|
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
|
||||||
|
sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;
|
||||||
|
sSlaveConfig.TriggerFilter = 0;
|
||||||
|
if (HAL_TIM_SlaveConfigSynchronization(&htim8, &sSlaveConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Configure pins as
|
/** Configure pins as
|
||||||
* Analog
|
* Analog
|
||||||
* Input
|
* Input
|
||||||
@ -146,16 +417,36 @@ static void MX_GPIO_Init(void)
|
|||||||
/* GPIO Ports Clock Enable */
|
/* GPIO Ports Clock Enable */
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(GPIOA, OLED_DC_Pin|OLED_RST_Pin|OLED_CS_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(GPIOE, MOT1_DIR_Pin|MOT2_DIR_Pin|MOT3_DIR_Pin|MOT4_DIR_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin : LED_Pin */
|
/*Configure GPIO pin : LED_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_Pin;
|
GPIO_InitStruct.Pin = LED_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pins : OLED_DC_Pin OLED_RST_Pin OLED_CS_Pin */
|
||||||
|
GPIO_InitStruct.Pin = OLED_DC_Pin|OLED_RST_Pin|OLED_CS_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pins : MOT1_DIR_Pin MOT2_DIR_Pin MOT3_DIR_Pin MOT4_DIR_Pin */
|
||||||
|
GPIO_InitStruct.Pin = MOT1_DIR_Pin|MOT2_DIR_Pin|MOT3_DIR_Pin|MOT4_DIR_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 4 */
|
/* USER CODE BEGIN 4 */
|
||||||
|
@ -77,6 +77,280 @@ void HAL_MspInit(void)
|
|||||||
/* USER CODE END MspInit 1 */
|
/* USER CODE END MspInit 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
|
||||||
|
{
|
||||||
|
|
||||||
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
if(hspi->Instance==SPI1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN SPI1_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END SPI1_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_SPI1_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**SPI1 GPIO Configuration
|
||||||
|
PA5 ------> SPI1_SCK
|
||||||
|
PA6 ------> SPI1_MISO
|
||||||
|
PA7 ------> SPI1_MOSI
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_6;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN SPI1_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END SPI1_MspInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(hspi->Instance==SPI1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN SPI1_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END SPI1_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_SPI1_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**SPI1 GPIO Configuration
|
||||||
|
PA5 ------> SPI1_SCK
|
||||||
|
PA6 ------> SPI1_MISO
|
||||||
|
PA7 ------> SPI1_MOSI
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
|
||||||
|
|
||||||
|
}
|
||||||
|
/* USER CODE BEGIN SPI1_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END SPI1_MspDeInit 1 */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
|
||||||
|
{
|
||||||
|
|
||||||
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
if(htim_base->Instance==TIM1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM1_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM1_CLK_ENABLE();
|
||||||
|
/* USER CODE BEGIN TIM1_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM2)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM2_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM2_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**TIM2 GPIO Configuration
|
||||||
|
PA15 ------> TIM2_ETR
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT1_CNT_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(MOT1_CNT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
__HAL_AFIO_REMAP_TIM2_PARTIAL_1();
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM2_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM3_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**TIM3 GPIO Configuration
|
||||||
|
PD2 ------> TIM3_ETR
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT2_CNT_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(MOT2_CNT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM3_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM4_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**TIM4 GPIO Configuration
|
||||||
|
PE0 ------> TIM4_ETR
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT3_CNT_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(MOT3_CNT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM4_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM8)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM8_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM8_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM8_CLK_ENABLE();
|
||||||
|
|
||||||
|
/**TIM8 GPIO Configuration
|
||||||
|
PA0-WKUP ------> TIM8_ETR
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT4_CNT_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(MOT4_CNT_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM8_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM8_MspInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
|
||||||
|
{
|
||||||
|
|
||||||
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
if(htim->Instance==TIM1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM1_MspPostInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspPostInit 0 */
|
||||||
|
|
||||||
|
/**TIM1 GPIO Configuration
|
||||||
|
PE9 ------> TIM1_CH1
|
||||||
|
PE11 ------> TIM1_CH2
|
||||||
|
PE13 ------> TIM1_CH3
|
||||||
|
PE14 ------> TIM1_CH4
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = MOT1_PWM_Pin|MOT2_PWM_Pin|MOT3_PWM_Pin|MOT4_PWM_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
__HAL_AFIO_REMAP_TIM1_ENABLE();
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM1_MspPostInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspPostInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(htim_base->Instance==TIM1)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM1_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM1_CLK_DISABLE();
|
||||||
|
/* USER CODE BEGIN TIM1_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM1_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM2)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM2_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM2_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**TIM2 GPIO Configuration
|
||||||
|
PA15 ------> TIM2_ETR
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(MOT1_CNT_GPIO_Port, MOT1_CNT_Pin);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM2_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM3_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**TIM3 GPIO Configuration
|
||||||
|
PD2 ------> TIM3_ETR
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(MOT2_CNT_GPIO_Port, MOT2_CNT_Pin);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM3_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM4_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**TIM4 GPIO Configuration
|
||||||
|
PE0 ------> TIM4_ETR
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(MOT3_CNT_GPIO_Port, MOT3_CNT_Pin);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM4_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM8)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM8_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM8_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM8_CLK_DISABLE();
|
||||||
|
|
||||||
|
/**TIM8 GPIO Configuration
|
||||||
|
PA0-WKUP ------> TIM8_ETR
|
||||||
|
*/
|
||||||
|
HAL_GPIO_DeInit(MOT4_CNT_GPIO_Port, MOT4_CNT_Pin);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM8_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM8_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
674
system/include/stm32f1xx/stm32f1xx_hal_spi.h
Normal file
674
system/include/stm32f1xx/stm32f1xx_hal_spi.h
Normal file
@ -0,0 +1,674 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* @file stm32f1xx_hal_spi.h
|
||||||
|
* @author MCD Application Team
|
||||||
|
* @version V1.0.4
|
||||||
|
* @date 29-April-2016
|
||||||
|
* @brief Header file of SPI HAL module.
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*
|
||||||
|
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
|
#ifndef __STM32F1xx_HAL_SPI_H
|
||||||
|
#define __STM32F1xx_HAL_SPI_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "stm32f1xx_hal_def.h"
|
||||||
|
|
||||||
|
/** @addtogroup STM32F1xx_HAL_Driver
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Exported types ------------------------------------------------------------*/
|
||||||
|
/** @defgroup SPI_Exported_Types SPI Exported Types
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SPI Configuration Structure definition
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint32_t Mode; /*!< Specifies the SPI operating mode.
|
||||||
|
This parameter can be a value of @ref SPI_mode */
|
||||||
|
|
||||||
|
uint32_t Direction; /*!< Specifies the SPI Directional mode state.
|
||||||
|
This parameter can be a value of @ref SPI_Direction_mode */
|
||||||
|
|
||||||
|
uint32_t DataSize; /*!< Specifies the SPI data size.
|
||||||
|
This parameter can be a value of @ref SPI_data_size */
|
||||||
|
|
||||||
|
uint32_t CLKPolarity; /*!< Specifies the serial clock steady state.
|
||||||
|
This parameter can be a value of @ref SPI_Clock_Polarity */
|
||||||
|
|
||||||
|
uint32_t CLKPhase; /*!< Specifies the clock active edge for the bit capture.
|
||||||
|
This parameter can be a value of @ref SPI_Clock_Phase */
|
||||||
|
|
||||||
|
uint32_t NSS; /*!< Specifies whether the NSS signal is managed by
|
||||||
|
hardware (NSS pin) or by software using the SSI bit.
|
||||||
|
This parameter can be a value of @ref SPI_Slave_Select_management */
|
||||||
|
|
||||||
|
uint32_t BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be
|
||||||
|
used to configure the transmit and receive SCK clock.
|
||||||
|
This parameter can be a value of @ref SPI_BaudRate_Prescaler
|
||||||
|
@note The communication clock is derived from the master
|
||||||
|
clock. The slave clock does not need to be set */
|
||||||
|
|
||||||
|
uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.
|
||||||
|
This parameter can be a value of @ref SPI_MSB_LSB_transmission */
|
||||||
|
|
||||||
|
uint32_t TIMode; /*!< Specifies if the TI mode is enabled or not.
|
||||||
|
This parameter can be a value of @ref SPI_TI_mode */
|
||||||
|
|
||||||
|
uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not.
|
||||||
|
This parameter can be a value of @ref SPI_CRC_Calculation */
|
||||||
|
|
||||||
|
uint32_t CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation.
|
||||||
|
This parameter must be a number between Min_Data = 0 and Max_Data = 65535 */
|
||||||
|
|
||||||
|
}SPI_InitTypeDef;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief HAL SPI State structure definition
|
||||||
|
*/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
HAL_SPI_STATE_RESET = 0x00, /*!< SPI not yet initialized or disabled */
|
||||||
|
HAL_SPI_STATE_READY = 0x01, /*!< SPI initialized and ready for use */
|
||||||
|
HAL_SPI_STATE_BUSY = 0x02, /*!< SPI process is ongoing */
|
||||||
|
HAL_SPI_STATE_BUSY_TX = 0x12, /*!< Data Transmission process is ongoing */
|
||||||
|
HAL_SPI_STATE_BUSY_RX = 0x22, /*!< Data Reception process is ongoing */
|
||||||
|
HAL_SPI_STATE_BUSY_TX_RX = 0x32, /*!< Data Transmission and Reception process is ongoing */
|
||||||
|
HAL_SPI_STATE_ERROR = 0x03 /*!< SPI error state */
|
||||||
|
|
||||||
|
}HAL_SPI_StateTypeDef;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SPI handle Structure definition
|
||||||
|
*/
|
||||||
|
typedef struct __SPI_HandleTypeDef
|
||||||
|
{
|
||||||
|
SPI_TypeDef *Instance; /*!< SPI registers base address */
|
||||||
|
|
||||||
|
SPI_InitTypeDef Init; /*!< SPI communication parameters */
|
||||||
|
|
||||||
|
uint8_t *pTxBuffPtr; /*!< Pointer to SPI Tx transfer Buffer */
|
||||||
|
|
||||||
|
uint16_t TxXferSize; /*!< SPI Tx transfer size */
|
||||||
|
|
||||||
|
uint16_t TxXferCount; /*!< SPI Tx Transfer Counter */
|
||||||
|
|
||||||
|
uint8_t *pRxBuffPtr; /*!< Pointer to SPI Rx transfer Buffer */
|
||||||
|
|
||||||
|
uint16_t RxXferSize; /*!< SPI Rx transfer size */
|
||||||
|
|
||||||
|
uint16_t RxXferCount; /*!< SPI Rx Transfer Counter */
|
||||||
|
|
||||||
|
DMA_HandleTypeDef *hdmatx; /*!< SPI Tx DMA handle parameters */
|
||||||
|
|
||||||
|
DMA_HandleTypeDef *hdmarx; /*!< SPI Rx DMA handle parameters */
|
||||||
|
|
||||||
|
void (*RxISR)(struct __SPI_HandleTypeDef * hspi); /*!< function pointer on Rx ISR */
|
||||||
|
|
||||||
|
void (*TxISR)(struct __SPI_HandleTypeDef * hspi); /*!< function pointer on Tx ISR */
|
||||||
|
|
||||||
|
HAL_LockTypeDef Lock; /*!< SPI locking object */
|
||||||
|
|
||||||
|
__IO HAL_SPI_StateTypeDef State; /*!< SPI communication state */
|
||||||
|
|
||||||
|
__IO uint32_t ErrorCode; /*!< SPI Error code */
|
||||||
|
|
||||||
|
}SPI_HandleTypeDef;
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Exported constants --------------------------------------------------------*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Exported_Constants SPI Exported Constants
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Error_Codes SPI Error Codes
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define HAL_SPI_ERROR_NONE ((uint32_t)0x00) /*!< No error */
|
||||||
|
#define HAL_SPI_ERROR_MODF ((uint32_t)0x01) /*!< MODF error */
|
||||||
|
#define HAL_SPI_ERROR_CRC ((uint32_t)0x02) /*!< CRC error */
|
||||||
|
#define HAL_SPI_ERROR_OVR ((uint32_t)0x04) /*!< OVR error */
|
||||||
|
#define HAL_SPI_ERROR_DMA ((uint32_t)0x08) /*!< DMA transfer error */
|
||||||
|
#define HAL_SPI_ERROR_FLAG ((uint32_t)0x10) /*!< Flag: RXNE,TXE, BSY */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @defgroup SPI_mode SPI mode
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_MODE_SLAVE ((uint32_t)0x00000000)
|
||||||
|
#define SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Direction_mode SPI Direction mode
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_DIRECTION_2LINES ((uint32_t)0x00000000)
|
||||||
|
#define SPI_DIRECTION_2LINES_RXONLY SPI_CR1_RXONLY
|
||||||
|
#define SPI_DIRECTION_1LINE SPI_CR1_BIDIMODE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_data_size SPI data size
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_DATASIZE_8BIT ((uint32_t)0x00000000)
|
||||||
|
#define SPI_DATASIZE_16BIT SPI_CR1_DFF
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Clock_Polarity SPI Clock Polarity
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_POLARITY_LOW ((uint32_t)0x00000000)
|
||||||
|
#define SPI_POLARITY_HIGH SPI_CR1_CPOL
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Clock_Phase SPI Clock Phase
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_PHASE_1EDGE ((uint32_t)0x00000000)
|
||||||
|
#define SPI_PHASE_2EDGE SPI_CR1_CPHA
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Slave_Select_management SPI Slave Select management
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_NSS_SOFT SPI_CR1_SSM
|
||||||
|
#define SPI_NSS_HARD_INPUT ((uint32_t)0x00000000)
|
||||||
|
#define SPI_NSS_HARD_OUTPUT ((uint32_t)(SPI_CR2_SSOE << 16))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_BaudRate_Prescaler SPI BaudRate Prescaler
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_BAUDRATEPRESCALER_2 ((uint32_t)0x00000000)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_4 ((uint32_t)SPI_CR1_BR_0)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_8 ((uint32_t)SPI_CR1_BR_1)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_16 ((uint32_t)SPI_CR1_BR_1 | SPI_CR1_BR_0)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_32 ((uint32_t)SPI_CR1_BR_2)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_64 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_0)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_128 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_1)
|
||||||
|
#define SPI_BAUDRATEPRESCALER_256 ((uint32_t)SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_MSB_LSB_transmission SPI MSB LSB transmission
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_FIRSTBIT_MSB ((uint32_t)0x00000000)
|
||||||
|
#define SPI_FIRSTBIT_LSB SPI_CR1_LSBFIRST
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_TI_mode SPI TI mode disable
|
||||||
|
* @brief SPI TI Mode not supported for STM32F1xx family
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_TIMODE_DISABLE ((uint32_t)0x00000000)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_CRC_Calculation SPI CRC Calculation
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_CRCCALCULATION_DISABLE ((uint32_t)0x00000000)
|
||||||
|
#define SPI_CRCCALCULATION_ENABLE SPI_CR1_CRCEN
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Interrupt_configuration_definition SPI Interrupt configuration definition
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_IT_TXE SPI_CR2_TXEIE
|
||||||
|
#define SPI_IT_RXNE SPI_CR2_RXNEIE
|
||||||
|
#define SPI_IT_ERR SPI_CR2_ERRIE
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @defgroup SPI_Flag_definition SPI Flag definition
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_FLAG_RXNE SPI_SR_RXNE
|
||||||
|
#define SPI_FLAG_TXE SPI_SR_TXE
|
||||||
|
#define SPI_FLAG_CRCERR SPI_SR_CRCERR
|
||||||
|
#define SPI_FLAG_MODF SPI_SR_MODF
|
||||||
|
#define SPI_FLAG_OVR SPI_SR_OVR
|
||||||
|
#define SPI_FLAG_BSY SPI_SR_BSY
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Private constants ---------------------------------------------------------*/
|
||||||
|
/** @defgroup SPI_Private_Constants SPI Private Constants
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define SPI_INVALID_CRC_ERROR 0 /* CRC error wrongly detected */
|
||||||
|
#define SPI_VALID_CRC_ERROR 1 /* CRC error is true */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Exported macro ------------------------------------------------------------*/
|
||||||
|
/** @defgroup SPI_Exported_Macros SPI Exported Macros
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @brief Reset SPI handle state
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPI_STATE_RESET)
|
||||||
|
|
||||||
|
/** @brief Enable the specified SPI interrupts.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @param __INTERRUPT__: specifies the interrupt source to enable.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||||
|
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||||
|
* @arg SPI_IT_ERR: Error interrupt enable
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) SET_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__))
|
||||||
|
|
||||||
|
/** @brief Disable the specified SPI interrupts.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @param __INTERRUPT__: specifies the interrupt source to disable.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||||
|
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||||
|
* @arg SPI_IT_ERR: Error interrupt enable
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__))
|
||||||
|
|
||||||
|
/** @brief Check if the specified SPI interrupt source is enabled or disabled.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @param __INTERRUPT__: specifies the SPI interrupt source to check.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||||
|
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||||
|
* @arg SPI_IT_ERR: Error interrupt enable
|
||||||
|
* @retval The new state of __IT__ (TRUE or FALSE).
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
|
||||||
|
|
||||||
|
/** @brief Check whether the specified SPI flag is set or not.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @param __FLAG__: specifies the flag to check.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg SPI_FLAG_RXNE: Receive buffer not empty flag
|
||||||
|
* @arg SPI_FLAG_TXE: Transmit buffer empty flag
|
||||||
|
* @arg SPI_FLAG_CRCERR: CRC error flag
|
||||||
|
* @arg SPI_FLAG_MODF: Mode fault flag
|
||||||
|
* @arg SPI_FLAG_OVR: Overrun flag
|
||||||
|
* @arg SPI_FLAG_BSY: Busy flag
|
||||||
|
* @retval The new state of __FLAG__ (TRUE or FALSE).
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
|
||||||
|
|
||||||
|
/** @brief Clear the SPI CRCERR pending flag.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_CLEAR_CRCERRFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR = ~(SPI_FLAG_CRCERR))
|
||||||
|
|
||||||
|
/** @brief Clear the SPI MODF pending flag.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_CLEAR_MODFFLAG(__HANDLE__) \
|
||||||
|
do{ \
|
||||||
|
__IO uint32_t tmpreg; \
|
||||||
|
tmpreg = (__HANDLE__)->Instance->SR; \
|
||||||
|
tmpreg = CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE); \
|
||||||
|
UNUSED(tmpreg); \
|
||||||
|
}while(0)
|
||||||
|
|
||||||
|
/** @brief Clear the SPI OVR pending flag.
|
||||||
|
* @param __HANDLE__: specifies the SPI handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_CLEAR_OVRFLAG(__HANDLE__) \
|
||||||
|
do{ \
|
||||||
|
__IO uint32_t tmpreg; \
|
||||||
|
tmpreg = (__HANDLE__)->Instance->DR; \
|
||||||
|
tmpreg = (__HANDLE__)->Instance->SR; \
|
||||||
|
UNUSED(tmpreg); \
|
||||||
|
}while(0)
|
||||||
|
|
||||||
|
|
||||||
|
/** @brief Enables the SPI.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE)
|
||||||
|
|
||||||
|
/** @brief Disables the SPI.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_SPI_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Private macros -----------------------------------------------------------*/
|
||||||
|
/** @defgroup SPI_Private_Macros SPI Private Macros
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Mode parameter is in allowed range.
|
||||||
|
* @param __MODE__: specifies the SPI Mode.
|
||||||
|
* This parameter can be a value of @ref SPI_mode
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_MODE(__MODE__) (((__MODE__) == SPI_MODE_SLAVE) || ((__MODE__) == SPI_MODE_MASTER))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Direction Mode parameter is in allowed range.
|
||||||
|
* @param __MODE__: specifies the SPI Direction Mode.
|
||||||
|
* This parameter can be a value of @ref SPI_Direction_mode
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_DIRECTION_MODE(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \
|
||||||
|
((__MODE__) == SPI_DIRECTION_2LINES_RXONLY) || \
|
||||||
|
((__MODE__) == SPI_DIRECTION_1LINE))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Direction Mode parameter is 1 or 2 lines.
|
||||||
|
* @param __MODE__: specifies the SPI Direction Mode.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_DIRECTION_2LINES_OR_1LINE(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \
|
||||||
|
((__MODE__) == SPI_DIRECTION_1LINE))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Direction Mode parameter is 2 lines.
|
||||||
|
* @param __MODE__: specifies the SPI Direction Mode.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_DIRECTION_2LINES(__MODE__) ((__MODE__) == SPI_DIRECTION_2LINES)
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Data Size parameter is in allowed range.
|
||||||
|
* @param __DATASIZE__: specifies the SPI Data Size.
|
||||||
|
* This parameter can be a value of @ref SPI_data_size
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_DATASIZE(__DATASIZE__) (((__DATASIZE__) == SPI_DATASIZE_16BIT) || \
|
||||||
|
((__DATASIZE__) == SPI_DATASIZE_8BIT))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Serial clock steady state parameter is in allowed range.
|
||||||
|
* @param __CPOL__: specifies the SPI serial clock steady state.
|
||||||
|
* This parameter can be a value of @ref SPI_Clock_Polarity
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_CPOL(__CPOL__) (((__CPOL__) == SPI_POLARITY_LOW) || \
|
||||||
|
((__CPOL__) == SPI_POLARITY_HIGH))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Clock Phase parameter is in allowed range.
|
||||||
|
* @param __CPHA__: specifies the SPI Clock Phase.
|
||||||
|
* This parameter can be a value of @ref SPI_Clock_Phase
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_CPHA(__CPHA__) (((__CPHA__) == SPI_PHASE_1EDGE) || \
|
||||||
|
((__CPHA__) == SPI_PHASE_2EDGE))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Slave select parameter is in allowed range.
|
||||||
|
* @param __NSS__: specifies the SPI Slave Slelect management parameter.
|
||||||
|
* This parameter can be a value of @ref SPI_Slave_Select_management
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_NSS(__NSS__) (((__NSS__) == SPI_NSS_SOFT) || \
|
||||||
|
((__NSS__) == SPI_NSS_HARD_INPUT) || \
|
||||||
|
((__NSS__) == SPI_NSS_HARD_OUTPUT))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI Baudrate prescaler parameter is in allowed range.
|
||||||
|
* @param __PRESCALER__: specifies the SPI Baudrate prescaler.
|
||||||
|
* This parameter can be a value of @ref SPI_BaudRate_Prescaler
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_BAUDRATE_PRESCALER(__PRESCALER__) (((__PRESCALER__) == SPI_BAUDRATEPRESCALER_2) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_4) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_8) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_16) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_32) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_64) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_128) || \
|
||||||
|
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_256))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI MSB LSB transmission parameter is in allowed range.
|
||||||
|
* @param __BIT__: specifies the SPI MSB LSB transmission (whether data transfer starts from MSB or LSB bit).
|
||||||
|
* This parameter can be a value of @ref SPI_MSB_LSB_transmission
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_FIRST_BIT(__BIT__) (((__BIT__) == SPI_FIRSTBIT_MSB) || \
|
||||||
|
((__BIT__) == SPI_FIRSTBIT_LSB))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI TI mode parameter is in allowed range.
|
||||||
|
* @param __MODE__: specifies the SPI TI mode.
|
||||||
|
* This parameter can be a value of @ref SPI_TI_mode
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_TIMODE(__MODE__) ((__MODE__) == SPI_TIMODE_DISABLE)
|
||||||
|
|
||||||
|
/** @brief Checks if SPI CRC calculation enabled state is in allowed range.
|
||||||
|
* @param __CALCULATION__: specifies the SPI CRC calculation enable state.
|
||||||
|
* This parameter can be a value of @ref SPI_CRC_Calculation
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_CRC_CALCULATION(__CALCULATION__) (((__CALCULATION__) == SPI_CRCCALCULATION_DISABLE) || \
|
||||||
|
((__CALCULATION__) == SPI_CRCCALCULATION_ENABLE))
|
||||||
|
|
||||||
|
/** @brief Checks if SPI polynomial value to be used for the CRC calculation, is in allowed range.
|
||||||
|
* @param __POLYNOMIAL__: specifies the SPI polynomial value to be used for the CRC calculation.
|
||||||
|
* This parameter must be a number between Min_Data = 0 and Max_Data = 65535
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define IS_SPI_CRC_POLYNOMIAL(__POLYNOMIAL__) (((__POLYNOMIAL__) >= 0x1) && ((__POLYNOMIAL__) <= 0xFFFF))
|
||||||
|
|
||||||
|
/** @brief Sets the SPI transmit-only mode.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define SPI_1LINE_TX(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE)
|
||||||
|
|
||||||
|
/** @brief Sets the SPI receive-only mode.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define SPI_1LINE_RX(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE)
|
||||||
|
|
||||||
|
/** @brief Resets the CRC calculation of the SPI.
|
||||||
|
* @param __HANDLE__: specifies the SPI Handle.
|
||||||
|
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define SPI_RESET_CRC(__HANDLE__) do{CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN);\
|
||||||
|
SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN);}while(0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Exported functions --------------------------------------------------------*/
|
||||||
|
/** @addtogroup SPI_Exported_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Initialization/de-initialization functions **********************************/
|
||||||
|
/** @addtogroup SPI_Exported_Functions_Group1
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_DeInit (SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* I/O operation functions *****************************************************/
|
||||||
|
/** @addtogroup SPI_Exported_Functions_Group2
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi);
|
||||||
|
HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi);
|
||||||
|
|
||||||
|
void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Peripheral State and Control functions **************************************/
|
||||||
|
/** @addtogroup SPI_Exported_Functions_Group3
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi);
|
||||||
|
uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Private functions --------------------------------------------------------*/
|
||||||
|
/** @addtogroup SPI_Private_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
uint8_t SPI_ISCRCErrorValid(SPI_HandleTypeDef *hspi);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __STM32F1xx_HAL_SPI_H */
|
||||||
|
|
||||||
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
2410
system/src/stm32f1xx/stm32f1xx_hal_spi.c
Normal file
2410
system/src/stm32f1xx/stm32f1xx_hal_spi.c
Normal file
File diff suppressed because it is too large
Load Diff
217
system/src/stm32f1xx/stm32f1xx_hal_spi_ex.c
Normal file
217
system/src/stm32f1xx/stm32f1xx_hal_spi_ex.c
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* @file stm32f1xx_hal_spi_ex.c
|
||||||
|
* @author MCD Application Team
|
||||||
|
* @version V1.0.4
|
||||||
|
* @date 29-April-2016
|
||||||
|
* @brief Extended SPI HAL module driver.
|
||||||
|
*
|
||||||
|
* This file provides firmware functions to manage the following
|
||||||
|
* functionalities SPI extension peripheral:
|
||||||
|
* + Extended Peripheral Control functions
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*
|
||||||
|
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
|
/** @addtogroup STM32F1xx_HAL_Driver
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#ifdef HAL_SPI_MODULE_ENABLED
|
||||||
|
|
||||||
|
/** @defgroup SPI_Private_Variables SPI Private Variables
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/* Variable used to determine if device is impacted by implementation of workaround
|
||||||
|
related to wrong CRC errors detection on SPI2. Conditions in which this workaround has to be applied, are:
|
||||||
|
- STM32F101CDE/STM32F103CDE
|
||||||
|
- Revision ID : Z
|
||||||
|
- SPI2
|
||||||
|
- In receive only mode, with CRC calculation enabled, at the end of the CRC reception,
|
||||||
|
the software needs to check the CRCERR flag. If it is found set, read back the SPI_RXCRC:
|
||||||
|
+ If the value is 0, the complete data transfer is successful.
|
||||||
|
+ Otherwise, one or more errors have been detected during the data transfer by CPU or DMA.
|
||||||
|
If CRCERR is found reset, the complete data transfer is considered successful.
|
||||||
|
*/
|
||||||
|
uint8_t uCRCErrorWorkaroundCheck = 0;
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
|
/* Private define ------------------------------------------------------------*/
|
||||||
|
/* Private macro -------------------------------------------------------------*/
|
||||||
|
/* Private variables ---------------------------------------------------------*/
|
||||||
|
/* Private function prototypes -----------------------------------------------*/
|
||||||
|
/* Private functions ---------------------------------------------------------*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI_Exported_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI_Exported_Functions_Group1
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initializes the SPI according to the specified parameters
|
||||||
|
* in the SPI_InitTypeDef and create the associated handle.
|
||||||
|
* @param hspi: pointer to a SPI_HandleTypeDef structure that contains
|
||||||
|
* the configuration information for SPI module.
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi)
|
||||||
|
{
|
||||||
|
/* Check the SPI handle allocation */
|
||||||
|
if(hspi == NULL)
|
||||||
|
{
|
||||||
|
return HAL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check the parameters */
|
||||||
|
assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance));
|
||||||
|
assert_param(IS_SPI_MODE(hspi->Init.Mode));
|
||||||
|
assert_param(IS_SPI_DIRECTION_MODE(hspi->Init.Direction));
|
||||||
|
assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize));
|
||||||
|
assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity));
|
||||||
|
assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase));
|
||||||
|
assert_param(IS_SPI_NSS(hspi->Init.NSS));
|
||||||
|
assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler));
|
||||||
|
assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit));
|
||||||
|
assert_param(IS_SPI_TIMODE(hspi->Init.TIMode));
|
||||||
|
assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation));
|
||||||
|
assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial));
|
||||||
|
|
||||||
|
if(hspi->State == HAL_SPI_STATE_RESET)
|
||||||
|
{
|
||||||
|
/* Init the low level hardware : GPIO, CLOCK, NVIC... */
|
||||||
|
HAL_SPI_MspInit(hspi);
|
||||||
|
}
|
||||||
|
|
||||||
|
hspi->State = HAL_SPI_STATE_BUSY;
|
||||||
|
|
||||||
|
/* Disble the selected SPI peripheral */
|
||||||
|
__HAL_SPI_DISABLE(hspi);
|
||||||
|
|
||||||
|
/*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/
|
||||||
|
/* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management,
|
||||||
|
Communication speed, First bit and CRC calculation state */
|
||||||
|
WRITE_REG(hspi->Instance->CR1, (hspi->Init.Mode | hspi->Init.Direction | hspi->Init.DataSize |
|
||||||
|
hspi->Init.CLKPolarity | hspi->Init.CLKPhase | (hspi->Init.NSS & SPI_CR1_SSM) |
|
||||||
|
hspi->Init.BaudRatePrescaler | hspi->Init.FirstBit | hspi->Init.CRCCalculation) );
|
||||||
|
|
||||||
|
/* Configure : NSS management */
|
||||||
|
WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16) & SPI_CR2_SSOE) | hspi->Init.TIMode));
|
||||||
|
|
||||||
|
/*---------------------------- SPIx CRCPOLY Configuration ------------------*/
|
||||||
|
/* Configure : CRC Polynomial */
|
||||||
|
WRITE_REG(hspi->Instance->CRCPR, hspi->Init.CRCPolynomial);
|
||||||
|
|
||||||
|
#if defined (STM32F101x6) || defined (STM32F101xB) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F102x6) || defined (STM32F102xB) || defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
|
||||||
|
/* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */
|
||||||
|
CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (STM32F101xE) || defined (STM32F103xE)
|
||||||
|
/* Check RevisionID value for identifying if Device is Rev Z (0x0001) in order to enable workaround for
|
||||||
|
CRC errors wrongly detected */
|
||||||
|
/* Pb is that ES_STM32F10xxCDE also identify an issue in Debug registers access while not in Debug mode.
|
||||||
|
Revision ID information is only available in Debug mode, so Workaround could not be implemented
|
||||||
|
to distinguish Rev Z devices (issue present) from more recent version (issue fixed).
|
||||||
|
So, in case of Revison Z F101 or F103 devices, below variable should be assigned to 1 */
|
||||||
|
uCRCErrorWorkaroundCheck = 0;
|
||||||
|
#else
|
||||||
|
uCRCErrorWorkaroundCheck = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
hspi->ErrorCode = HAL_SPI_ERROR_NONE;
|
||||||
|
hspi->State = HAL_SPI_STATE_READY;
|
||||||
|
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup SPI_Private_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Checks if encountered CRC error could be corresponding to wrongly detected errors
|
||||||
|
* according to SPI instance, Device type, and revision ID.
|
||||||
|
* @param hspi: pointer to a SPI_HandleTypeDef structure that contains
|
||||||
|
* the configuration information for SPI module.
|
||||||
|
* @retval CRC error validity (SPI_INVALID_CRC_ERROR or SPI_VALID_CRC_ERROR).
|
||||||
|
*/
|
||||||
|
uint8_t SPI_ISCRCErrorValid(SPI_HandleTypeDef *hspi)
|
||||||
|
{
|
||||||
|
#if defined (STM32F101xE) || defined (STM32F103xE)
|
||||||
|
/* Check how to handle this CRC error (workaround to be applied or not) */
|
||||||
|
/* If CRC errors could be wrongly detected (issue 2.15.2 in STM32F10xxC/D/E silicon limitations ES (DocID14732 Rev 13) */
|
||||||
|
if ( (uCRCErrorWorkaroundCheck != 0) && (hspi->Instance == SPI2) )
|
||||||
|
{
|
||||||
|
if (hspi->Instance->RXCRCR == 0)
|
||||||
|
{
|
||||||
|
return (SPI_INVALID_CRC_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (SPI_VALID_CRC_ERROR);
|
||||||
|
#else
|
||||||
|
return (SPI_VALID_CRC_ERROR);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* HAL_SPI_MODULE_ENABLED */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
Loading…
x
Reference in New Issue
Block a user