Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
lwc
/
compare
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
cac7c7a9
authored
Jul 09, 2019
by
Sebastian Renner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Experimental serial comm concept for STM (unfinished)
parent
ed417d58
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
356 additions
and
290 deletions
+356
-290
templates/blackpill/Inc/api.h
+5
-0
templates/blackpill/Inc/crypto_aead.h
+19
-0
templates/blackpill/Src/main.c
+332
-290
No files found.
templates/blackpill/Inc/api.h
0 → 100644
View file @
cac7c7a9
#define CRYPTO_KEYBYTES 16
#define CRYPTO_NSECBYTES 0
#define CRYPTO_NPUBBYTES 16
#define CRYPTO_ABYTES 16
#define CRYPTO_NOOVERLAP 1
templates/blackpill/Inc/crypto_aead.h
0 → 100644
View file @
cac7c7a9
int
crypto_aead_encrypt
(
unsigned
char
*
c
,
unsigned
long
long
*
clen
,
const
unsigned
char
*
m
,
unsigned
long
long
mlen
,
const
unsigned
char
*
ad
,
unsigned
long
long
adlen
,
const
unsigned
char
*
nsec
,
const
unsigned
char
*
npub
,
const
unsigned
char
*
k
);
int
crypto_aead_decrypt
(
unsigned
char
*
m
,
unsigned
long
long
*
outputmlen
,
unsigned
char
*
nsec
,
const
unsigned
char
*
c
,
unsigned
long
long
clen
,
const
unsigned
char
*
ad
,
unsigned
long
long
adlen
,
const
unsigned
char
*
npub
,
const
unsigned
char
*
k
);
templates/blackpill/Src/main.c
View file @
cac7c7a9
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
** This notice applies to any and all portions of this file
* that are not between comment pairs USER CODE BEGIN and
* USER CODE END. Other portions of this file, whether
* inserted by the user or by software development tools
* are owned by their respective copyright owners.
*
* COPYRIGHT(c) 2019 STMicroelectronics
*
* 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.
*
******************************************************************************
*/
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
** This notice applies to any and all portions of this file
* that are not between comment pairs USER CODE BEGIN and
* USER CODE END. Other portions of this file, whether
* inserted by the user or by software development tools
* are owned by their respective copyright owners.
*
* COPYRIGHT(c) 2019 STMicroelectronics
*
* 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.
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
#include <stdint.h>
#include "crypto_aead.h"
#include "api.h"
#ifndef KEY_LENGTH
#define KEY_LENGTH 16
#endif
#ifndef NSEC_LENGTH
#define NSEC_LENGTH 0
#endif
#ifndef NPUB_LENGTH
#define NPUB_LENGTH 0
#endif
unsigned
char
c
[
1400
];
unsigned
long
long
clen
=
0
;
unsigned
char
m
[
1400
];
unsigned
long
long
mlen
=
0
;
unsigned
char
ad
[
1400
];
unsigned
long
long
adlen
=
0
;
unsigned
char
nsec
[
512
];
unsigned
long
long
nslen
=
NSEC_LENGTH
;
unsigned
char
npub
[
512
];
unsigned
long
long
nplen
=
NPUB_LENGTH
;
unsigned
char
k
[
512
];
unsigned
long
long
klen
=
KEY_LENGTH
;
unsigned
char
rcv
;
/* Private function prototypes -----------------------------------------------*/
void
SystemClock_Config
(
void
);
static
void
MX_GPIO_Init
(
void
);
static
void
MX_USART1_UART_Init
(
void
);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
static
void
read_variable_serial
(
unsigned
char
action
);
static
void
write_variable_serial
(
unsigned
char
target
[],
unsigned
long
long
len
);
/* USER CODE END 0 */
static
void
read_variable_serial
(
unsigned
char
action
){
/**
* @brief The application entry point.
* @retval int
*/
int
main
(
void
)
{
/* USER CODE BEGIN 1 */
uint32_t
len
;
for
(
int
i
=
3
;
i
>=
0
;
i
--
)
{
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
rcv
=
LL_USART_ReceiveData8
(
USART1
);
len
|=
(
uint32_t
)
rcv
<<
i
*
8
;
}
/* USER CODE END 1 */
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
rcv
=
LL_USART_ReceiveData8
(
USART1
);
// Implement all cases or use another concept at all
switch
(
action
)
{
case
'k'
:
k
[
i
]
=
rcv
;
break
;
default
:
return
-
1
:
}
/* MCU Configuration--------------------------------------------------------*/
}
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
static
void
write_variable_serial
(
unsigned
char
target
[],
unsigned
long
long
len
)
{
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_AFIO
);
LL_APB1_GRP1_EnableClock
(
LL_APB1_GRP1_PERIPH_PWR
);
unsigned
char
trm
;
for
(
int
i
=
3
;
i
>=
0
;
i
--
)
{
trm
=
(
uint8_t
)
len
>>
i
*
8
;
while
(
!
LL_USART_IsActiveFlag_TXE
(
USART1
));
LL_USART_TransmitData8
(
USART1
,
trm
);
}
NVIC_SetPriorityGrouping
(
NVIC_PRIORITYGROUP_4
);
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
while
(
!
LL_USART_IsActiveFlag_TXE
(
USART1
));
LL_USART_TransmitData8
(
USART1
,
target
[
i
]);
}
/* System interrupt init*/
}
/**NOJTAG: JTAG-DP Disabled and SW-DP Enabled
*/
LL_GPIO_AF_Remap_SWJ_NOJTAG
();
/* USER CODE BEGIN Init */
int
main
(
void
)
{
/* USER CODE BEGIN 1 */
/* USER CODE END Init
*/
/* USER CODE END 1
*/
/* Configure the system clock */
SystemClock_Config
();
/* MCU Configuration--------------------------------------------------------*/
/* USER CODE BEGIN SysInit
*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick.
*/
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init
();
MX_USART1_UART_Init
();
/* USER CODE BEGIN 2 */
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_AFIO
);
LL_APB1_GRP1_EnableClock
(
LL_APB1_GRP1_PERIPH_PWR
);
/* USER CODE END 2 */
NVIC_SetPriorityGrouping
(
NVIC_PRIORITYGROUP_4
);
/* Infinite loop */
/* USER CODE BEGIN WHILE */
uint8_t
trm
=
0xFF
;
uint8_t
rcv
;
/* System interrupt init*/
/**NOJTAG: JTAG-DP Disabled and SW-DP Enabled
*/
LL_GPIO_AF_Remap_SWJ_NOJTAG
();
while
(
1
)
{
/* USER CODE END WHILE */
while
(
!
LL_USART_IsActiveFlag_TXE
(
USART1
));
LL_GPIO_TogglePin
(
GPIOB
,
LL_GPIO_PIN_12
);
LL_USART_TransmitData8
(
USART1
,
trm
);
LL_mDelay
(
100
);
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
LL_GPIO_TogglePin
(
GPIOB
,
LL_GPIO_PIN_12
);
rcv
=
LL_USART_ReceiveData8
(
USART1
);
LL_mDelay
(
100
);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
/* USER CODE BEGIN Init */
/**
* @brief System Clock Configuration
* @retval None
*/
void
SystemClock_Config
(
void
)
{
LL_FLASH_SetLatency
(
LL_FLASH_LATENCY_1
);
if
(
LL_FLASH_GetLatency
()
!=
LL_FLASH_LATENCY_1
)
{
Error_Handler
();
}
LL_RCC_HSI_SetCalibTrimming
(
16
);
LL_RCC_HSI_Enable
();
/* USER CODE END Init */
/* Wait till HSI is ready */
while
(
LL_RCC_HSI_IsReady
()
!=
1
)
{
}
LL_RCC_PLL_ConfigDomain_SYS
(
LL_RCC_PLLSOURCE_HSI_DIV_2
,
LL_RCC_PLL_MUL_12
);
LL_RCC_PLL_Enable
();
/* Configure the system clock */
SystemClock_Config
();
/* Wait till PLL is ready */
while
(
LL_RCC_PLL_IsReady
()
!=
1
)
{
}
LL_RCC_SetAHBPrescaler
(
LL_RCC_SYSCLK_DIV_1
);
LL_RCC_SetAPB1Prescaler
(
LL_RCC_APB1_DIV_2
);
LL_RCC_SetAPB2Prescaler
(
LL_RCC_APB2_DIV_1
);
LL_RCC_SetSysClkSource
(
LL_RCC_SYS_CLKSOURCE_PLL
);
/* USER CODE BEGIN SysInit */
/* Wait till System clock is ready */
while
(
LL_RCC_GetSysClkSource
()
!=
LL_RCC_SYS_CLKSOURCE_STATUS_PLL
)
{
}
LL_Init1msTick
(
48000000
);
LL_SYSTICK_SetClkSource
(
LL_SYSTICK_CLKSOURCE_HCLK
);
LL_SetSystemCoreClock
(
48000000
);
}
/* USER CODE END SysInit */
/**
* @brief USART1 Initialization Function
* @param None
* @retval None
*/
static
void
MX_USART1_UART_Init
(
void
)
{
/* USER CODE BEGIN USART1_Init 0 */
/* USER CODE END USART1_Init 0 */
LL_USART_InitTypeDef
USART_InitStruct
=
{
0
};
LL_GPIO_InitTypeDef
GPIO_InitStruct
=
{
0
};
/* Peripheral clock enable */
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_USART1
);
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOA
);
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_9
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ALTERNATE
;
GPIO_InitStruct
.
Speed
=
LL_GPIO_SPEED_FREQ_HIGH
;
GPIO_InitStruct
.
OutputType
=
LL_GPIO_OUTPUT_PUSHPULL
;
LL_GPIO_Init
(
GPIOA
,
&
GPIO_InitStruct
);
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_10
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_FLOATING
;
LL_GPIO_Init
(
GPIOA
,
&
GPIO_InitStruct
);
/* USER CODE BEGIN USART1_Init 1 */
/* USER CODE END USART1_Init 1 */
USART_InitStruct
.
BaudRate
=
115200
;
USART_InitStruct
.
DataWidth
=
LL_USART_DATAWIDTH_8B
;
USART_InitStruct
.
StopBits
=
LL_USART_STOPBITS_1
;
USART_InitStruct
.
Parity
=
LL_USART_PARITY_NONE
;
USART_InitStruct
.
TransferDirection
=
LL_USART_DIRECTION_TX_RX
;
USART_InitStruct
.
HardwareFlowControl
=
LL_USART_HWCONTROL_NONE
;
LL_USART_Init
(
USART1
,
&
USART_InitStruct
);
LL_USART_ConfigAsyncMode
(
USART1
);
LL_USART_Enable
(
USART1
);
/* USER CODE BEGIN USART1_Init 2 */
/* USER CODE END USART1_Init 2 */
}
/* Initialize all configured peripherals */
MX_GPIO_Init
();
MX_USART1_UART_Init
();
/* USER CODE BEGIN 2 */
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
static
void
MX_GPIO_Init
(
void
)
{
LL_GPIO_InitTypeDef
GPIO_InitStruct
=
{
0
};
/* GPIO Ports Clock Enable */
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOC
);
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOD
);
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOA
);
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOB
);
/**/
LL_GPIO_ResetOutputPin
(
GPIOB
,
LL_GPIO_PIN_12
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_13
|
LL_GPIO_PIN_14
|
LL_GPIO_PIN_15
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ANALOG
;
LL_GPIO_Init
(
GPIOC
,
&
GPIO_InitStruct
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_0
|
LL_GPIO_PIN_1
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ANALOG
;
LL_GPIO_Init
(
GPIOD
,
&
GPIO_InitStruct
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_0
|
LL_GPIO_PIN_1
|
LL_GPIO_PIN_2
|
LL_GPIO_PIN_3
|
LL_GPIO_PIN_4
|
LL_GPIO_PIN_5
|
LL_GPIO_PIN_6
|
LL_GPIO_PIN_7
|
LL_GPIO_PIN_8
|
LL_GPIO_PIN_11
|
LL_GPIO_PIN_12
|
LL_GPIO_PIN_15
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ANALOG
;
LL_GPIO_Init
(
GPIOA
,
&
GPIO_InitStruct
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_0
|
LL_GPIO_PIN_1
|
LL_GPIO_PIN_2
|
LL_GPIO_PIN_10
|
LL_GPIO_PIN_11
|
LL_GPIO_PIN_13
|
LL_GPIO_PIN_14
|
LL_GPIO_PIN_15
|
LL_GPIO_PIN_3
|
LL_GPIO_PIN_4
|
LL_GPIO_PIN_5
|
LL_GPIO_PIN_6
|
LL_GPIO_PIN_7
|
LL_GPIO_PIN_8
|
LL_GPIO_PIN_9
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ANALOG
;
LL_GPIO_Init
(
GPIOB
,
&
GPIO_InitStruct
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_12
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_OUTPUT
;
GPIO_InitStruct
.
Speed
=
LL_GPIO_SPEED_FREQ_LOW
;
GPIO_InitStruct
.
OutputType
=
LL_GPIO_OUTPUT_PUSHPULL
;
LL_GPIO_Init
(
GPIOB
,
&
GPIO_InitStruct
);
/**/
LL_GPIO_AF_EnableRemap_PD01
();
}
/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
/* USER CODE END 2 */
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void
Error_Handler
(
void
)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
/* USER CODE END Error_Handler_Debug */
}
while
(
1
)
{
/* USER CODE END WHILE */
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
rcv
=
LL_USART_ReceiveData8
(
USART1
);
switch
(
rcv
)
{
case
'c'
:
case
'm'
:
case
'a'
:
case
'k'
:
case
's'
:
case
'p'
:
read_variable
(
rcv
);
break
;
case
'C'
:
write_variable
(
c
,
clen
);
break
;
case
'M'
:
write_variable
(
m
,
mlen
);
break
;
case
'A'
:
write_variable
(
ad
,
adlen
);
break
;
case
'K'
:
write_variable
(
k
,
klen
);
break
;
case
'S'
:
write_variable
(
nsec
,
nslen
);
break
;
case
'P'
:
write_variable
(
npub
,
nplen
);
break
;
case
'e'
:
res
=
crypto_aead_encrypt
(
c
,
&
clen
,
m
,
mlen
,
ad
,
adlen
,
nsec
,
npub
,
k
);
break
;
default
:
return
2
;
}
/**
* @brief System Clock Configuration
* @retval None
*/
void
SystemClock_Config
(
void
)
{
LL_FLASH_SetLatency
(
LL_FLASH_LATENCY_1
);
if
(
LL_FLASH_GetLatency
()
!=
LL_FLASH_LATENCY_1
)
{
Error_Handler
();
}
LL_RCC_HSI_SetCalibTrimming
(
16
);
LL_RCC_HSI_Enable
();
/* Wait till HSI is ready */
while
(
LL_RCC_HSI_IsReady
()
!=
1
)
{
}
LL_RCC_PLL_ConfigDomain_SYS
(
LL_RCC_PLLSOURCE_HSI_DIV_2
,
LL_RCC_PLL_MUL_12
);
LL_RCC_PLL_Enable
();
/* Wait till PLL is ready */
while
(
LL_RCC_PLL_IsReady
()
!=
1
)
{
}
LL_RCC_SetAHBPrescaler
(
LL_RCC_SYSCLK_DIV_1
);
LL_RCC_SetAPB1Prescaler
(
LL_RCC_APB1_DIV_2
);
LL_RCC_SetAPB2Prescaler
(
LL_RCC_APB2_DIV_1
);
LL_RCC_SetSysClkSource
(
LL_RCC_SYS_CLKSOURCE_PLL
);
/* Wait till System clock is ready */
while
(
LL_RCC_GetSysClkSource
()
!=
LL_RCC_SYS_CLKSOURCE_STATUS_PLL
)
{
}
LL_Init1msTick
(
48000000
);
LL_SYSTICK_SetClkSource
(
LL_SYSTICK_CLKSOURCE_HCLK
);
LL_SetSystemCoreClock
(
48000000
);
}
/**
* @brief USART1 Initialization Function
* @param None
* @retval None
*/
static
void
MX_USART1_UART_Init
(
void
)
{
/* USER CODE BEGIN USART1_Init 0 */
/* USER CODE END USART1_Init 0 */
LL_USART_InitTypeDef
USART_InitStruct
=
{
0
};
LL_GPIO_InitTypeDef
GPIO_InitStruct
=
{
0
};
/* Peripheral clock enable */
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_USART1
);
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOA
);
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_9
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ALTERNATE
;
GPIO_InitStruct
.
Speed
=
LL_GPIO_SPEED_FREQ_HIGH
;
GPIO_InitStruct
.
OutputType
=
LL_GPIO_OUTPUT_PUSHPULL
;
LL_GPIO_Init
(
GPIOA
,
&
GPIO_InitStruct
);
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_10
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_FLOATING
;
LL_GPIO_Init
(
GPIOA
,
&
GPIO_InitStruct
);
/* USER CODE BEGIN USART1_Init 1 */
/* USER CODE END USART1_Init 1 */
USART_InitStruct
.
BaudRate
=
115200
;
USART_InitStruct
.
DataWidth
=
LL_USART_DATAWIDTH_8B
;
USART_InitStruct
.
StopBits
=
LL_USART_STOPBITS_1
;
USART_InitStruct
.
Parity
=
LL_USART_PARITY_NONE
;
USART_InitStruct
.
TransferDirection
=
LL_USART_DIRECTION_TX_RX
;
USART_InitStruct
.
HardwareFlowControl
=
LL_USART_HWCONTROL_NONE
;
LL_USART_Init
(
USART1
,
&
USART_InitStruct
);
LL_USART_ConfigAsyncMode
(
USART1
);
LL_USART_Enable
(
USART1
);
/* USER CODE BEGIN USART1_Init 2 */
/* USER CODE END USART1_Init 2 */
}
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
static
void
MX_GPIO_Init
(
void
)
{
LL_GPIO_InitTypeDef
GPIO_InitStruct
=
{
0
};
/* GPIO Ports Clock Enable */
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOC
);
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOD
);
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOA
);
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_GPIOB
);
/**/
LL_GPIO_ResetOutputPin
(
GPIOB
,
LL_GPIO_PIN_12
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_13
|
LL_GPIO_PIN_14
|
LL_GPIO_PIN_15
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ANALOG
;
LL_GPIO_Init
(
GPIOC
,
&
GPIO_InitStruct
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_0
|
LL_GPIO_PIN_1
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ANALOG
;
LL_GPIO_Init
(
GPIOD
,
&
GPIO_InitStruct
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_0
|
LL_GPIO_PIN_1
|
LL_GPIO_PIN_2
|
LL_GPIO_PIN_3
|
LL_GPIO_PIN_4
|
LL_GPIO_PIN_5
|
LL_GPIO_PIN_6
|
LL_GPIO_PIN_7
|
LL_GPIO_PIN_8
|
LL_GPIO_PIN_11
|
LL_GPIO_PIN_12
|
LL_GPIO_PIN_15
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ANALOG
;
LL_GPIO_Init
(
GPIOA
,
&
GPIO_InitStruct
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_0
|
LL_GPIO_PIN_1
|
LL_GPIO_PIN_2
|
LL_GPIO_PIN_10
|
LL_GPIO_PIN_11
|
LL_GPIO_PIN_13
|
LL_GPIO_PIN_14
|
LL_GPIO_PIN_15
|
LL_GPIO_PIN_3
|
LL_GPIO_PIN_4
|
LL_GPIO_PIN_5
|
LL_GPIO_PIN_6
|
LL_GPIO_PIN_7
|
LL_GPIO_PIN_8
|
LL_GPIO_PIN_9
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_ANALOG
;
LL_GPIO_Init
(
GPIOB
,
&
GPIO_InitStruct
);
/**/
GPIO_InitStruct
.
Pin
=
LL_GPIO_PIN_12
;
GPIO_InitStruct
.
Mode
=
LL_GPIO_MODE_OUTPUT
;
GPIO_InitStruct
.
Speed
=
LL_GPIO_SPEED_FREQ_LOW
;
GPIO_InitStruct
.
OutputType
=
LL_GPIO_OUTPUT_PUSHPULL
;
LL_GPIO_Init
(
GPIOB
,
&
GPIO_InitStruct
);
/**/
LL_GPIO_AF_EnableRemap_PD01
();
}
/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void
Error_Handler
(
void
)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
/* USER CODE END Error_Handler_Debug */
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void
assert_failed
(
uint8_t
*
file
,
uint32_t
line
)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
}
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void
assert_failed
(
uint8_t
*
file
,
uint32_t
line
)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
}
#endif
/* USE_FULL_ASSERT */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment