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 */
/* USER CODE BEGIN Header */
/**
/**
******************************************************************************
******************************************************************************
* @file : main.c
* @file : main.c
* @brief : Main program body
* @brief : Main program body
******************************************************************************
******************************************************************************
** This notice applies to any and all portions of this file
** This notice applies to any and all portions of this file
* that are not between comment pairs USER CODE BEGIN and
* that are not between comment pairs USER CODE BEGIN and
* USER CODE END. Other portions of this file, whether
* USER CODE END. Other portions of this file, whether
* inserted by the user or by software development tools
* inserted by the user or by software development tools
* are owned by their respective copyright owners.
* are owned by their respective copyright owners.
*
*
* COPYRIGHT(c) 2019 STMicroelectronics
* COPYRIGHT(c) 2019 STMicroelectronics
*
*
* Redistribution and use in source and binary forms, with or without modification,
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* without specific prior written permission.
*
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* 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
* 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.
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
******************************************************************************
******************************************************************************
*/
*/
/* USER CODE END Header */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "main.h"
#include <stdint.h>
/* Private includes ----------------------------------------------------------*/
#include "crypto_aead.h"
/* USER CODE BEGIN Includes */
#include "api.h"
/* USER CODE END Includes */
#ifndef KEY_LENGTH
#define KEY_LENGTH 16
/* Private typedef -----------------------------------------------------------*/
#endif
/* USER CODE BEGIN PTD */
#ifndef NSEC_LENGTH
/* USER CODE END PTD */
#define NSEC_LENGTH 0
#endif
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#ifndef NPUB_LENGTH
#define NPUB_LENGTH 0
/* USER CODE END PD */
#endif
/* Private macro -------------------------------------------------------------*/
unsigned
char
c
[
1400
];
/* USER CODE BEGIN PM */
unsigned
long
long
clen
=
0
;
unsigned
char
m
[
1400
];
/* USER CODE END PM */
unsigned
long
long
mlen
=
0
;
unsigned
char
ad
[
1400
];
/* Private variables ---------------------------------------------------------*/
unsigned
long
long
adlen
=
0
;
unsigned
char
nsec
[
512
];
/* USER CODE BEGIN PV */
unsigned
long
long
nslen
=
NSEC_LENGTH
;
/* USER CODE END PV */
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 -----------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
void
SystemClock_Config
(
void
);
void
SystemClock_Config
(
void
);
static
void
MX_GPIO_Init
(
void
);
static
void
MX_GPIO_Init
(
void
);
static
void
MX_USART1_UART_Init
(
void
);
static
void
MX_USART1_UART_Init
(
void
);
/* USER CODE BEGIN PFP */
static
void
read_variable_serial
(
unsigned
char
action
);
static
void
write_variable_serial
(
unsigned
char
target
[],
unsigned
long
long
len
);
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
static
void
read_variable_serial
(
unsigned
char
action
){
/**
uint32_t
len
;
* @brief The application entry point.
for
(
int
i
=
3
;
i
>=
0
;
i
--
)
{
* @retval int
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
*/
rcv
=
LL_USART_ReceiveData8
(
USART1
);
int
main
(
void
)
len
|=
(
uint32_t
)
rcv
<<
i
*
8
;
{
}
/* USER CODE BEGIN 1 */
/* 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
);
unsigned
char
trm
;
LL_APB1_GRP1_EnableClock
(
LL_APB1_GRP1_PERIPH_PWR
);
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 */
/* MCU Configuration--------------------------------------------------------*/
SystemClock_Config
();
/* USER CODE BEGIN SysInit
*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick.
*/
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
LL_APB2_GRP1_EnableClock
(
LL_APB2_GRP1_PERIPH_AFIO
);
MX_GPIO_Init
();
LL_APB1_GRP1_EnableClock
(
LL_APB1_GRP1_PERIPH_PWR
);
MX_USART1_UART_Init
();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
NVIC_SetPriorityGrouping
(
NVIC_PRIORITYGROUP_4
);
/* Infinite loop */
/* System interrupt init*/
/* USER CODE BEGIN WHILE */
uint8_t
trm
=
0xFF
;
/**NOJTAG: JTAG-DP Disabled and SW-DP Enabled
uint8_t
rcv
;
*/
LL_GPIO_AF_Remap_SWJ_NOJTAG
();
while
(
1
)
/* USER CODE BEGIN Init */
{
/* 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 END 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
();
/* Wait till HSI is ready */
/* Configure the system clock */
while
(
LL_RCC_HSI_IsReady
()
!=
1
)
SystemClock_Config
();
{
}
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 */
/* USER CODE BEGIN SysInit */
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 */
/* USER CODE END SysInit */
while
(
LL_RCC_GetSysClkSource
()
!=
LL_RCC_SYS_CLKSOURCE_STATUS_PLL
)
{
}
LL_Init1msTick
(
48000000
);
LL_SYSTICK_SetClkSource
(
LL_SYSTICK_CLKSOURCE_HCLK
);
LL_SetSystemCoreClock
(
48000000
);
}
/**
/* Initialize all configured peripherals */
* @brief USART1 Initialization Function
MX_GPIO_Init
();
* @param None
MX_USART1_UART_Init
();
* @retval None
/* USER CODE BEGIN 2 */
*/
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 */
}
/**
/* USER CODE END 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 */
/**
/* Infinite loop */
* @brief This function is executed in case of error occurrence.
/* USER CODE BEGIN WHILE */
* @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 */
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
#ifdef USE_FULL_ASSERT
/**
/**
* @brief Reports the name of the source file and the source line number
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @param line: assert_param error line source number
* @retval None
* @retval None
*/
*/
void
assert_failed
(
uint8_t
*
file
,
uint32_t
line
)
void
assert_failed
(
uint8_t
*
file
,
uint32_t
line
)
{
{
/* USER CODE BEGIN 6 */
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
/* 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) */
tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
/* USER CODE END 6 */
}
}
#endif
/* USE_FULL_ASSERT */
#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