-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b22dd07
commit 381c6db
Showing
5 changed files
with
138 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#ifndef __STM32F7xx_IT_H | ||
#define __STM32F7xx_IT_H | ||
|
||
void USART3_IRQHandler(void); | ||
void NMI_Handler(void); | ||
void HardFault_Handler(void); | ||
void MemManage_Handler(void); | ||
void BusFault_Handler(void); | ||
void UsageFault_Handler(void); | ||
|
||
#endif /* __STM32F7xx_IT_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,62 +1,102 @@ | ||
#include "main.h" | ||
|
||
void thread_1_handler(void const * argument); | ||
void thread_2_handler(void const * argument); | ||
void thread_3_handler(void const * argument); | ||
#define USART_BAUDRATE 115200 | ||
|
||
osThreadId stThread1Handle; | ||
osThreadId stThread2Handle; | ||
osThreadId stThread3Handle; | ||
static void usart_init(void); | ||
static void led_thread_handler(void const * argument); | ||
static void usart_thread_handler(void const * argument); | ||
|
||
volatile uint8_t u08RxByte; | ||
UART_HandleTypeDef stUsartHandle; | ||
|
||
osThreadId stLedThreadHandle; | ||
osThreadId stUsartThreadHandle; | ||
|
||
int main(void) | ||
{ | ||
HAL_Init(); | ||
|
||
osThreadDef(thread1, thread_1_handler, osPriorityNormal, 0, 128); | ||
osThreadDef(thread2, thread_2_handler, osPriorityNormal, 0, 128); | ||
osThreadDef(thread3, thread_3_handler, osPriorityNormal, 0, 128); | ||
osThreadDef(led, led_thread_handler, osPriorityNormal, 0, 128); | ||
osThreadDef(usart, usart_thread_handler, osPriorityNormal, 0, 128); | ||
|
||
stThread1Handle = osThreadCreate(osThread(thread1), NULL); | ||
stThread2Handle = osThreadCreate(osThread(thread2), NULL); | ||
stThread3Handle = osThreadCreate(osThread(thread3), NULL); | ||
stLedThreadHandle = osThreadCreate(osThread(led), NULL); | ||
stUsartThreadHandle = osThreadCreate(osThread(usart), NULL); | ||
|
||
osKernelStart(); | ||
|
||
while (1) {} | ||
while(1) {} | ||
} | ||
|
||
void thread_1_handler(void const * argument) | ||
static void led_thread_handler(void const * argument) | ||
{ | ||
const uint32_t u32BlinkDelayMs = 1000; | ||
|
||
BSP_LED_Init(LED_GREEN); | ||
BSP_LED_Init(LED_BLUE); | ||
BSP_LED_Init(LED_RED); | ||
for(;;) | ||
{ | ||
BSP_LED_Toggle(LED_GREEN); | ||
BSP_LED_Toggle(LED_BLUE); | ||
BSP_LED_Toggle(LED_RED); | ||
osDelay(u32BlinkDelayMs); | ||
} | ||
} | ||
|
||
void thread_2_handler(void const * argument) | ||
static void usart_thread_handler(void const * argument) | ||
{ | ||
const uint32_t u32BlinkDelayMs = 500; | ||
const uint32_t u32MsgDelayMs = 1000; | ||
|
||
BSP_LED_Init(LED_BLUE); | ||
usart_init(); | ||
HAL_UART_Receive_IT(&stUsartHandle, &u08RxByte, sizeof(u08RxByte)); | ||
for(;;) | ||
{ | ||
BSP_LED_Toggle(LED_BLUE); | ||
osDelay(u32BlinkDelayMs); | ||
HAL_UART_Transmit_IT(&stUsartHandle, (uint8_t *)"Hello world\n", (sizeof("Hello world\n")-1)); | ||
osDelay(u32MsgDelayMs); | ||
} | ||
} | ||
|
||
void thread_3_handler(void const * argument) | ||
static void usart_init(void) | ||
{ | ||
const uint32_t u32BlinkDelayMs = 250; | ||
GPIO_InitTypeDef stUsartGpio = {0}; | ||
|
||
BSP_LED_Init(LED_RED); | ||
for(;;) | ||
/* Initialize usart clock */ | ||
USARTx_CLK_ENABLE(); | ||
USARTx_GPIO_CLK_ENABLE(); | ||
|
||
/* Initialize usart gpio */ | ||
stUsartGpio.Pin = USARTx_TX_PIN|USARTx_RX_PIN; | ||
stUsartGpio.Mode = GPIO_MODE_AF_PP; | ||
stUsartGpio.Pull = GPIO_NOPULL; | ||
stUsartGpio.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||
stUsartGpio.Alternate = GPIO_AF7_USART3; | ||
HAL_GPIO_Init(USARTx_GPIO_PORT, &stUsartGpio); | ||
|
||
/* Initialize usart intrrupt */ | ||
HAL_NVIC_SetPriority(USART3_IRQn, 5, 0); | ||
HAL_NVIC_EnableIRQ(USART3_IRQn); | ||
|
||
/* Initialize usart configs */ | ||
stUsartHandle.Instance = USART3; | ||
stUsartHandle.Init.BaudRate = USART_BAUDRATE; | ||
stUsartHandle.Init.WordLength = UART_WORDLENGTH_8B; | ||
stUsartHandle.Init.StopBits = UART_STOPBITS_1; | ||
stUsartHandle.Init.Parity = UART_PARITY_NONE; | ||
stUsartHandle.Init.Mode = UART_MODE_TX_RX; | ||
stUsartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE; | ||
stUsartHandle.Init.OverSampling = UART_OVERSAMPLING_16; | ||
stUsartHandle.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; | ||
stUsartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; | ||
if(HAL_UART_Init(&stUsartHandle) != HAL_OK) | ||
{ | ||
BSP_LED_Toggle(LED_RED); | ||
osDelay(u32BlinkDelayMs); | ||
while(1) {} | ||
} | ||
} | ||
|
||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *stHandle) | ||
{ | ||
if(USART3 == stHandle->Instance) | ||
{ | ||
HAL_UART_Receive_IT(&stUsartHandle, &u08RxByte, sizeof(u08RxByte)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
#include "stm32f7xx_it.h" | ||
#include "main.h" | ||
|
||
extern UART_HandleTypeDef stUsartHandle; | ||
|
||
void USART3_IRQHandler(void) | ||
{ | ||
HAL_UART_IRQHandler(&stUsartHandle); | ||
} | ||
|
||
void NMI_Handler(void) | ||
{ | ||
} | ||
|
||
void HardFault_Handler(void) | ||
{ | ||
while (1) | ||
{} | ||
} | ||
|
||
void MemManage_Handler(void) | ||
{ | ||
while (1) | ||
{} | ||
} | ||
|
||
void BusFault_Handler(void) | ||
{ | ||
while (1) | ||
{} | ||
} | ||
|
||
void UsageFault_Handler(void) | ||
{ | ||
while (1) | ||
{} | ||
} |