11.22:完善注释;提高代码的移植性;完善串口程序。
This commit is contained in:
@@ -1,64 +0,0 @@
|
||||
#include "SysTick.h"
|
||||
|
||||
#if SYSTEM == SYSTEM_NONE
|
||||
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӳٺ<D3B3><D9BA><EFBFBD>
|
||||
//SYSTICK<43><4B>ʱ<EFBFBD>ӹ̶<D3B9>ΪAHBʱ<42>ӵ<EFBFBD>1/8
|
||||
//SYSCLK:ϵͳʱ<CDB3><CAB1>Ƶ<EFBFBD><C6B5>
|
||||
void vSysTickInit(uint8_t ucSYSCLK)
|
||||
{
|
||||
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
|
||||
xUcFacInit.ucFacUs=ucSYSCLK/8;
|
||||
xUcFacInit.usFacMs=(uint16_t)xUcFacInit.ucFacUs*1000;
|
||||
}
|
||||
|
||||
//<2F><>ʱnus
|
||||
//nusΪҪ<CEAA><D2AA>ʱ<EFBFBD><CAB1>us<75><73>.
|
||||
void vDelayUs(uint32_t ulNus)
|
||||
{
|
||||
uint32_t ulTemp;
|
||||
SysTick->LOAD=ulNus*xUcFacInit.ucFacUs; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->VAL=0x00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
do
|
||||
{
|
||||
ulTemp=SysTick->CTRL;
|
||||
} while((ulTemp&0x01)&&!(ulTemp&(1<<16))); //<2F>ȴ<EFBFBD>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD>
|
||||
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //<2F>رռ<D8B1><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
SysTick->VAL =0X00; //<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
//<2F><>ʱnms
|
||||
//ע<><D7A2>nms<6D>ķ<EFBFBD>Χ
|
||||
//SysTick->LOADΪ24λ<34>Ĵ<EFBFBD><C4B4><EFBFBD>,<2C><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱΪ:
|
||||
//nms<=0xffffff*8*1000/SYSCLK
|
||||
//SYSCLK<4C><4B>λΪHz,nms<6D><73>λΪms
|
||||
//<2F><>72M<32><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,nms<=1864
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>뼶<EFBFBD><EBBCB6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD><EFBFBD>Systick<63><6B>ʱ<EFBFBD><CAB1>Ϊ24λ<34><CEBB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ֵΪ0xFFFFFF<46><46>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>16777215<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>0xFFFFFF<46><46><EFBFBD><EFBFBD>ʵ<EFBFBD>ʼ<EFBFBD><CABC>ص<EFBFBD>ֵ<EFBFBD><D6B5>ȡģ<C8A1><C4A3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD>̡<EFBFBD>
|
||||
* <20><><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>1.864s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ᵼ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>ʱΪxms-16777215<31>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD>Ƿ<C7B7><F1B3ACB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳɶ<D6B3><C9B6><EFBFBD>1000ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void vDelayMs(uint16_t usNms)
|
||||
{
|
||||
uint32_t ulTemp;
|
||||
while (usNms)
|
||||
{
|
||||
uint16_t current = (usNms > 1000) ? 1000 : usNms;
|
||||
usNms -= current;
|
||||
|
||||
SysTick->LOAD = (uint32_t)current * xUcFacInit.usFacMs;
|
||||
SysTick->VAL = 0x00;
|
||||
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
|
||||
do
|
||||
{
|
||||
ulTemp = SysTick->CTRL;
|
||||
} while ((ulTemp & 0x01) && !(ulTemp & (1 << 16)));
|
||||
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
|
||||
SysTick->VAL = 0X00;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1,28 +0,0 @@
|
||||
#ifndef __SysTick_H__
|
||||
#define __SysTick_H__
|
||||
|
||||
#include "stm32f10x.h" // Device header
|
||||
|
||||
#define SYSTEM SYSTEM_FREERTOS
|
||||
#define SYSTEM_NONE 0
|
||||
#define SYSTEM_FREERTOS 1
|
||||
#define SYSTEM_UCOSII 2
|
||||
#define SYSTEM_UCOSIII 3
|
||||
#define SYSTEM_RT_THREAD 4
|
||||
#define SYSTEM_AZURE_RTOS 5
|
||||
|
||||
typedef struct {
|
||||
uint8_t ucFacUs;
|
||||
int16_t usFacMs;
|
||||
} UcFacInit_t;
|
||||
|
||||
static UcFacInit_t xUcFacInit = {
|
||||
.ucFacUs = 0,
|
||||
.usFacMs = 0
|
||||
};
|
||||
|
||||
void vSysTickInit(uint8_t ucSYSCLK);
|
||||
void vDelayUs(uint32_t ulNus);
|
||||
void vDelayMs(uint16_t usNms);
|
||||
|
||||
#endif
|
||||
@@ -128,11 +128,15 @@ void USART3_IRQHandler(void)
|
||||
if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
|
||||
{
|
||||
/* code */
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
uint8_t ulRxData = (uint8_t)USART_ReceiveData(USART3);
|
||||
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||
#if (USE_NONE_SYSTEM == 1)
|
||||
#elif (USE_FREERTOS == 1)
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
xQueueSendFromISR(xQueueUsart3IrqHdlr, &ulRxData, &xHigherPriorityTaskWoken);
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||
#elif (USE_OSAL == 1)
|
||||
#endif
|
||||
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD> */
|
||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,32 @@
|
||||
#ifndef __USART3_H__
|
||||
#define __USART3_H__
|
||||
|
||||
#include "stm32f10x.h" // Device header
|
||||
#include "FreeRTOS.h"
|
||||
#include "queue.h"
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#define USE_NONE_SYSTEM 0
|
||||
#define USE_FREERTOS 1
|
||||
#define USE_OSAL 0
|
||||
#define vLoRaIrqHandler USART3_IRQHandler
|
||||
|
||||
#define USART3_GPIO_PIN_TX GPIO_Pin_10
|
||||
#define USART3_GPIO_PIN_RX GPIO_Pin_11
|
||||
#define USART3_GPIO_PIN_ATK_AUX GPIO_Pin_4 // PA4
|
||||
#define USART3_GPIO_PIN_ATK_MD0 GPIO_Pin_3 // PB3
|
||||
|
||||
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
||||
#if (USE_NONE_SYSTEM == 1)
|
||||
#elif (USE_FREERTOS == 1)
|
||||
#include "FreeRTOS.h"
|
||||
#include "queue.h"
|
||||
#elif (USE_OSAL == 1)
|
||||
#endif
|
||||
|
||||
#include "stm32f10x.h" // Device header
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#if (USE_NONE_SYSTEM == 1)
|
||||
#elif (USE_FREERTOS == 1)
|
||||
extern QueueHandle_t xQueueUsart3IrqHdlr;
|
||||
#elif (USE_OSAL == 1)
|
||||
#endif
|
||||
|
||||
void vUsart3Init(uint32_t ulUsart3Baudrate);
|
||||
void vUsart3SendByte(uint8_t ucByte);
|
||||
|
||||
Reference in New Issue
Block a user