3737#include <util/delay.h>
3838#elif defined(TM1638_PLATFORM_STM32 )
3939#include "main.h"
40+ #elif defined(TM1638_PLATFORM_STM32_LL )
41+ #include "main.h"
4042#elif defined(TM1638_PLATFORM_ESP32_IDF )
4143#include "freertos/FreeRTOS.h"
4244#include "driver/gpio.h"
@@ -71,6 +73,29 @@ void TM1638_SetGPIO_IN_PU(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
7173 GPIO_InitStruct .Speed = GPIO_SPEED_FREQ_LOW ;
7274 HAL_GPIO_Init (GPIOx , & GPIO_InitStruct );
7375}
76+ #elif defined(TM1638_PLATFORM_STM32_LL )
77+ void TM1638_SetGPIO_OUT (GPIO_TypeDef * GPIOx , uint32_t GPIO_Pin )
78+ {
79+ LL_GPIO_InitTypeDef GPIO_InitStruct = {0 };
80+
81+ GPIO_InitStruct .Pin = GPIO_Pin ;
82+ GPIO_InitStruct .Mode = LL_GPIO_MODE_OUTPUT ;
83+ GPIO_InitStruct .Speed = LL_GPIO_SPEED_FREQ_LOW ;
84+ GPIO_InitStruct .OutputType = LL_GPIO_OUTPUT_PUSHPULL ;
85+ GPIO_InitStruct .Pull = LL_GPIO_PULL_NO ;
86+ LL_GPIO_Init (GPIOx , & GPIO_InitStruct );
87+ }
88+
89+ void TM1638_SetGPIO_IN_PU (GPIO_TypeDef * GPIOx , uint32_t GPIO_Pin )
90+ {
91+ LL_GPIO_InitTypeDef GPIO_InitStruct = {0 };
92+
93+ GPIO_InitStruct .Pin = GPIO_Pin ;
94+ GPIO_InitStruct .Mode = LL_GPIO_MODE_INPUT ;
95+ GPIO_InitStruct .Speed = LL_GPIO_SPEED_FREQ_LOW ;
96+ GPIO_InitStruct .Pull = LL_GPIO_PULL_UP ;
97+ LL_GPIO_Init (GPIOx , & GPIO_InitStruct );
98+ }
7499#elif defined(TM1638_PLATFORM_ESP32_IDF )
75100void TM1638_SetGPIO_OUT (gpio_num_t GPIO_Pad )
76101{
@@ -93,7 +118,7 @@ TM1638_PlatformInit(void)
93118 TM1638_CLK_DDR |= (1 <<TM1638_CLK_NUM );
94119 TM1638_DIO_DDR |= (1 <<TM1638_DIO_NUM );
95120 TM1638_STB_DDR |= (1 <<TM1638_STB_NUM );
96- #elif defined(TM1638_PLATFORM_STM32 )
121+ #elif defined(TM1638_PLATFORM_STM32 ) || defined( TM1638_PLATFORM_STM32_LL )
97122 TM1638_SetGPIO_OUT (TM1638_CLK_GPIO , TM1638_CLK_PIN );
98123 TM1638_SetGPIO_OUT (TM1638_STB_GPIO , TM1638_STB_PIN );
99124 TM1638_SetGPIO_OUT (TM1638_DIO_GPIO , TM1638_DIO_PIN );
@@ -113,7 +138,7 @@ TM1638_PlatformDeInit(void)
113138 TM1638_DIO_PORT &= ~(1 <<TM1638_DIO_NUM );
114139 TM1638_STB_DDR &= ~(1 <<TM1638_STB_NUM );
115140 TM1638_STB_PORT &= ~(1 <<TM1638_STB_NUM );
116- #elif defined(TM1638_PLATFORM_STM32 )
141+ #elif defined(TM1638_PLATFORM_STM32 ) || defined( TM1638_PLATFORM_STM32_LL )
117142
118143#elif defined(TM1638_PLATFORM_ESP32_IDF )
119144 gpio_reset_pin (TM1638_CLK_GPIO );
@@ -127,7 +152,7 @@ TM1638_DioConfigOut(void)
127152{
128153#if defined(TM1638_PLATFORM_AVR )
129154 TM1638_DIO_DDR |= (1 <<TM1638_DIO_NUM );
130- #elif defined(TM1638_PLATFORM_STM32 )
155+ #elif defined(TM1638_PLATFORM_STM32 ) || defined( TM1638_PLATFORM_STM32_LL )
131156 TM1638_SetGPIO_OUT (TM1638_DIO_GPIO , TM1638_DIO_PIN );
132157#elif defined(TM1638_PLATFORM_ESP32_IDF )
133158 TM1638_SetGPIO_OUT (TM1638_DIO_GPIO );
@@ -139,7 +164,7 @@ TM1638_DioConfigIn(void)
139164{
140165#if defined(TM1638_PLATFORM_AVR )
141166 TM1638_DIO_DDR &= ~(1 <<TM1638_DIO_NUM );
142- #elif defined(TM1638_PLATFORM_STM32 )
167+ #elif defined(TM1638_PLATFORM_STM32 ) || defined( TM1638_PLATFORM_STM32_LL )
143168 TM1638_SetGPIO_IN_PU (TM1638_DIO_GPIO , TM1638_DIO_PIN );
144169#elif defined(TM1638_PLATFORM_ESP32_IDF )
145170 TM1638_SetGPIO_IN_PU (TM1638_DIO_GPIO );
@@ -156,6 +181,13 @@ TM1638_DioWrite(uint8_t Level)
156181 TM1638_DIO_PORT &= ~(1 <<TM1638_DIO_NUM );
157182#elif defined(TM1638_PLATFORM_STM32 )
158183 HAL_GPIO_WritePin (TM1638_DIO_GPIO , TM1638_DIO_PIN , Level );
184+ #elif defined(TM1638_PLATFORM_STM32_LL )
185+ if ( Level != 0u ) {
186+ LL_GPIO_SetOutputPin (TM1638_DIO_GPIO , TM1638_DIO_PIN );
187+ }
188+ else {
189+ LL_GPIO_ResetOutputPin (TM1638_DIO_GPIO , TM1638_DIO_PIN );
190+ }
159191#elif defined(TM1638_PLATFORM_ESP32_IDF )
160192 gpio_set_level (TM1638_DIO_GPIO , Level );
161193#endif
@@ -169,6 +201,8 @@ TM1638_DioRead(void)
169201 Result = (TM1638_DIO_PIN & (1 << TM1638_DIO_NUM )) ? 1 : 0 ;
170202#elif defined(TM1638_PLATFORM_STM32 )
171203 Result = HAL_GPIO_ReadPin (TM1638_DIO_GPIO , TM1638_DIO_PIN );
204+ #elif defined(TM1638_PLATFORM_STM32_LL )
205+ Result = (LL_GPIO_ReadInputPort (TM1638_DIO_GPIO ) & TM1638_DIO_PIN ) == TM1638_DIO_PIN ;
172206#elif defined(TM1638_PLATFORM_ESP32_IDF )
173207 Result = gpio_get_level (TM1638_DIO_GPIO );
174208#endif
@@ -185,6 +219,13 @@ TM1638_ClkWrite(uint8_t Level)
185219 TM1638_CLK_PORT &= ~(1 <<TM1638_CLK_NUM );
186220#elif defined(TM1638_PLATFORM_STM32 )
187221 HAL_GPIO_WritePin (TM1638_CLK_GPIO , TM1638_CLK_PIN , Level );
222+ #elif defined(TM1638_PLATFORM_STM32_LL )
223+ if ( Level != 0u ) {
224+ LL_GPIO_SetOutputPin (TM1638_CLK_GPIO , TM1638_CLK_PIN );
225+ }
226+ else {
227+ LL_GPIO_ResetOutputPin (TM1638_CLK_GPIO , TM1638_CLK_PIN );
228+ }
188229#elif defined(TM1638_PLATFORM_ESP32_IDF )
189230 gpio_set_level (TM1638_CLK_GPIO , Level );
190231#endif
@@ -200,6 +241,13 @@ TM1638_StbWrite(uint8_t Level)
200241 TM1638_STB_PORT &= ~(1 <<TM1638_STB_NUM );
201242#elif defined(TM1638_PLATFORM_STM32 )
202243 HAL_GPIO_WritePin (TM1638_STB_GPIO , TM1638_STB_PIN , Level );
244+ #elif defined(TM1638_PLATFORM_STM32_LL )
245+ if ( Level != 0u ) {
246+ LL_GPIO_SetOutputPin (TM1638_STB_GPIO , TM1638_STB_PIN );
247+ }
248+ else {
249+ LL_GPIO_ResetOutputPin (TM1638_STB_GPIO , TM1638_STB_PIN );
250+ }
203251#elif defined(TM1638_PLATFORM_ESP32_IDF )
204252 gpio_set_level (TM1638_STB_GPIO , Level );
205253#endif
@@ -211,7 +259,7 @@ TM1638_DelayUs(uint8_t Delay)
211259#if defined(TM1638_PLATFORM_AVR )
212260 for (; Delay ; -- Delay )
213261 _delay_us (1 );
214- #elif defined(TM1638_PLATFORM_STM32 )
262+ #elif defined(TM1638_PLATFORM_STM32 ) || defined( TM1638_PLATFORM_STM32_LL )
215263 for (uint32_t DelayCounter = 0 ; DelayCounter < 100 * Delay ; DelayCounter ++ )
216264 DelayCounter = DelayCounter ;
217265#elif defined(TM1638_PLATFORM_ESP32_IDF )
0 commit comments