This commit is contained in:
Qiea
2024-12-19 14:06:05 +08:00
parent 1c0f3b676f
commit dcd484c1bd
58 changed files with 14859 additions and 863 deletions

View File

@@ -0,0 +1,5 @@
#include "Global_variable.h"
#include "sys.h"
u8 RX_len; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -0,0 +1,4 @@
#include "sys.h"
extern u8 RX_len;

40
SYSTEM/gpio/gpio.c Normal file
View File

@@ -0,0 +1,40 @@
#include "gpio.h"
#include "Function.h"
extern unsigned char flag_spi;
// GPIO<49><4F>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><E1B9B9>
GPIO_InitTypeDef GPIO_InitStruct = {0};
// <20><>ʼ<EFBFBD><CABC>PB5<42><35><EFBFBD><EFBFBD>
void GPIO_Init(void)
{
__HAL_RCC_GPIOB_CLK_ENABLE(); // ʹ<><CAB9>GPIOBʱ<42><CAB1>
// <20><><EFBFBD><EFBFBD>PB5Ϊ<35><CEAA><EFBFBD>ѡ<EBA3AC><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
GPIO_InitStruct.Pin = PPS_PIN; // <20><><EFBFBD><EFBFBD>PB5<42><35><EFBFBD><EFBFBD>
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
GPIO_InitStruct.Pull = GPIO_NOPULL; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HAL_GPIO_Init(PPS_GPIO_PORT, &GPIO_InitStruct); // <20><>ʼ<EFBFBD><CABC>PB5
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 2, 0); // <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); // ʹ<><CAB9><EFBFBD>ж<EFBFBD>
HAL_GPIO_WritePin(PPS_GPIO_PORT,PPS_PIN,GPIO_PIN_RESET); //<2F><>ʼΪ<CABC>͵<EFBFBD>ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɲ<EFBFBD><C9B2><EFBFBD><EFBFBD><EFBFBD>
}
// <20>ⲿ<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void EXTI9_5_IRQHandler(void)
{
// <20>ж<EFBFBD>PB5<42><35><EFBFBD>жϱ<D0B6>־<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (__HAL_GPIO_EXTI_GET_IT(PPS_PIN) != RESET)
{
// <20><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
__HAL_GPIO_EXTI_CLEAR_IT(PPS_PIN);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
flag_spi = 0;
}
}

10
SYSTEM/gpio/gpio.h Normal file
View File

@@ -0,0 +1,10 @@
#ifndef _GPIO_H
#define _GPIO_H
#include "stm32f4xx.h" // Device header
#define PPS_PIN GPIO_PIN_5
#define PPS_GPIO_PORT GPIOB
extern void GPIO_Init(void);
#endif

View File

@@ -0,0 +1,78 @@
//-----------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// WinnerI<72><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><C3B9>ܶ<EFBFBD><DCB6><EFBFBD>
// <20><> <20><>: <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>: 2018-08-04
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2018-08-04
// <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>:
// <20><>ǰ<EFBFBD>汾: V1.0
// <20><>ʷ<EFBFBD>汾:
// - V1.0: (2018-08-04)<29>һЩ<D2BB>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>STM32.
// <20><><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>: <20><><EFBFBD><EFBFBD>STM32F429+CycloneIV<49><56><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>塢LZE_ST_LINK2
// ˵ <20><>:
//
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// ͷ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
//-----------------------------------------------------------------
#include "stm32f429_winner.h"
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// void SystemClock_Config(u32 plln,u32 pllm,u32 pllp,u32 pllq)
//-----------------------------------------------------------------
//
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ϵͳʱ<CDB3>ӳ<EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: u32 plln: <20><>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL<4C><4C>Ƶ),ȡֵ<C8A1><D6B5>Χ:64~432.
// u32 pllm: <20><>PLL<4C><4C><EFBFBD><EFBFBD>ƵPLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮ǰ<D6AE>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2~63.
// u32 pllp: ϵͳʱ<CDB3>ӵ<EFBFBD><D3B5><EFBFBD>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮<4C><D6AE><EFBFBD>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2,4,6,8.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>ֵ!)
// u32 pllq: USB/SDIO/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮<4C><D6AE><EFBFBD>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2~15.
// <20><> <20><> ֵ: 0,<2C>ɹ<EFBFBD>;1,ʧ<><CAA7>
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>Ϊ25M<35><4D>ʱ<EFBFBD><CAB1>,<2C>Ƽ<EFBFBD>ֵ:plln=360,pllm=25,pllp=2,pllq=8.
// Fvco:VCOƵ<4F><C6B5> Fvco=Fs*(plln/pllm) Fvco=25*(360/25)=360Mhz
// SYSCLK:ϵͳʱ<CDB3><CAB1>Ƶ<EFBFBD><C6B5> SYSCLK=Fvco/pllp=Fs*(plln/(pllm*pllp)) SYSCLK=360/2=180Mhz
// Fusb:USB,SDIO,RNG<4E>ȵ<EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5> Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq)) Fusb=360/8=45Mhz
//-----------------------------------------------------------------
void SystemClock_Config(u32 plln,u32 pllm,u32 pllp,u32 pllq)
{
HAL_StatusTypeDef ret = HAL_OK;
RCC_OscInitTypeDef RCC_OscInitStructure;
RCC_ClkInitTypeDef RCC_ClkInitStructure;
__HAL_RCC_PWR_CLK_ENABLE(); //ʹ<><CAB9>PWRʱ<52><CAB1>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>
// ʱʹ<CAB1><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB9A6>ʵ<EFBFBD><CAB5>ƽ<EFBFBD><EFBFBD>˹<EFBFBD><CBB9><EFBFBD>ֻ<EFBFBD><D6BB>STM32F42xx<78><78>STM32F43xx<78><78><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);//<2F><><EFBFBD>õ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>1
RCC_OscInitStructure.OscillatorType=RCC_OSCILLATORTYPE_HSE; // ʱ<><CAB1>ԴΪHSE
RCC_OscInitStructure.HSEState=RCC_HSE_ON; // <20><><EFBFBD><EFBFBD>HSE
RCC_OscInitStructure.PLL.PLLState=RCC_PLL_ON; // <20><><EFBFBD><EFBFBD>PLL
RCC_OscInitStructure.PLL.PLLSource=RCC_PLLSOURCE_HSE; // PLLʱ<4C><CAB1>Դѡ<D4B4><D1A1>HSE
RCC_OscInitStructure.PLL.PLLM=pllm; // <20><>PLL<4C><4C><EFBFBD><EFBFBD>ƵPLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮ǰ<D6AE>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2~63.
RCC_OscInitStructure.PLL.PLLN=plln; // <20><>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL<4C><4C>Ƶ),ȡֵ<C8A1><D6B5>Χ:64~432.
RCC_OscInitStructure.PLL.PLLP=pllp; // ϵͳʱ<CDB3>ӵ<EFBFBD><D3B5><EFBFBD>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮<4C><D6AE><EFBFBD>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2,4,6,8.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>ֵ!)
RCC_OscInitStructure.PLL.PLLQ=pllq; // USB/SDIO/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮<4C><D6AE><EFBFBD>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2~15.
ret=HAL_RCC_OscConfig(&RCC_OscInitStructure); // <20><>ʼ<EFBFBD><CABC>
if(ret!=HAL_OK) while(1);
ret=HAL_PWREx_EnableOverDrive(); // <20><><EFBFBD><EFBFBD>Over-Driver<65><72><EFBFBD><EFBFBD>
if(ret!=HAL_OK) while(1);
// ѡ<><D1A1>PLLCLK<4C><4B>Ϊϵͳʱ<CDB3><CAB1>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HCLK,PCLK1<4B><31>PCLK2
RCC_ClkInitStructure.ClockType=(RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2);
RCC_ClkInitStructure.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK; // <20><><EFBFBD><EFBFBD>ϵͳʱ<CDB3><CAB1>ʱ<EFBFBD><CAB1>ԴΪPLL
RCC_ClkInitStructure.AHBCLKDivider=RCC_SYSCLK_DIV1; // AHB <20><>Ƶϵ<C6B5><CFB5>Ϊ1<CEAA><31>AHB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5>Ϊ180MHz
RCC_ClkInitStructure.APB1CLKDivider=RCC_HCLK_DIV4; // APB1<42><31>Ƶϵ<C6B5><CFB5>Ϊ4<CEAA><34>APB1<42><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5>Ϊ45MHz
RCC_ClkInitStructure.APB2CLKDivider=RCC_HCLK_DIV2; // APB2<42><32>Ƶϵ<C6B5><CFB5>Ϊ2<CEAA><32>APB2<42><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5>Ϊ90MHz
ret=HAL_RCC_ClockConfig(&RCC_ClkInitStructure,FLASH_LATENCY_5);// ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>FLASH<53><48>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ5WS<57><53>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>6<EFBFBD><36>CPU<50><55><EFBFBD>ڡ<EFBFBD>
if(ret!=HAL_OK)
while(1);
}
//-----------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------

View File

@@ -0,0 +1,132 @@
//-----------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
// <20><> <20><>: <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>: 2018-08-04
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2018-08-04
// <20><>ǰ<EFBFBD>汾: V1.0
// <20><>ʷ<EFBFBD>汾:
// - V1.0: (2018-08-04)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6>塢GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳʱ<CDB3><CAB1><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
// <20><><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>: <20><><EFBFBD><EFBFBD>STM32F429+CycloneIV<49><56><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>塢LZE_ST_LINK2
// ˵ <20><>:
//
//-----------------------------------------------------------------
#ifndef _WINNER_H
#define _WINNER_H
#include "stm32f4xx.h"
//-----------------------------------------------------------------
// <20><><EFBFBD><EFBFBD>һЩ<D2BB><D0A9><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ̹ؼ<CCB9><D8BC><EFBFBD>
//-----------------------------------------------------------------
typedef int32_t s32;
typedef int16_t s16;
typedef int8_t s8;
typedef const int32_t sc32;
typedef const int16_t sc16;
typedef const int8_t sc8;
typedef __IO int32_t vs32;
typedef __IO int16_t vs16;
typedef __IO int8_t vs8;
typedef __I int32_t vsc32;
typedef __I int16_t vsc16;
typedef __I int8_t vsc8;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
typedef const uint32_t uc32;
typedef const uint16_t uc16;
typedef const uint8_t uc8;
typedef __IO uint32_t vu32;
typedef __IO uint16_t vu16;
typedef __IO uint8_t vu8;
typedef __I uint32_t vuc32;
typedef __I uint16_t vuc16;
typedef __I uint8_t vuc8;
//-----------------------------------------------------------------
// λ<><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><CAB5>GPIO<49><4F><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
//-----------------------------------------------------------------
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
#define GPIOA_ODR_Addr (GPIOA_BASE+20) // 0x40020014
#define GPIOB_ODR_Addr (GPIOB_BASE+20) // 0x40020414
#define GPIOC_ODR_Addr (GPIOC_BASE+20) // 0x40020814
#define GPIOD_ODR_Addr (GPIOD_BASE+20) // 0x40020C14
#define GPIOE_ODR_Addr (GPIOE_BASE+20) // 0x40021014
#define GPIOF_ODR_Addr (GPIOF_BASE+20) // 0x40021414
#define GPIOG_ODR_Addr (GPIOG_BASE+20) // 0x40021814
#define GPIOH_ODR_Addr (GPIOH_BASE+20) // 0x40021C14
#define GPIOI_ODR_Addr (GPIOI_BASE+20) // 0x40022014
#define GPIOJ_ODR_ADDr (GPIOJ_BASE+20) // 0x40022414
#define GPIOK_ODR_ADDr (GPIOK_BASE+20) // 0x40022814
#define GPIOA_IDR_Addr (GPIOA_BASE+16) // 0x40020010
#define GPIOB_IDR_Addr (GPIOB_BASE+16) // 0x40020410
#define GPIOC_IDR_Addr (GPIOC_BASE+16) // 0x40020810
#define GPIOD_IDR_Addr (GPIOD_BASE+16) // 0x40020C10
#define GPIOE_IDR_Addr (GPIOE_BASE+16) // 0x40021010
#define GPIOF_IDR_Addr (GPIOF_BASE+16) // 0x40021410
#define GPIOG_IDR_Addr (GPIOG_BASE+16) // 0x40021810
#define GPIOH_IDR_Addr (GPIOH_BASE+16) // 0x40021C10
#define GPIOI_IDR_Addr (GPIOI_BASE+16) // 0x40022010
#define GPIOJ_IDR_Addr (GPIOJ_BASE+16) // 0x40022410
#define GPIOK_IDR_Addr (GPIOK_BASE+16) // 0x40022810
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PHout(n) BIT_ADDR(GPIOH_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PHin(n) BIT_ADDR(GPIOH_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PIout(n) BIT_ADDR(GPIOI_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PIin(n) BIT_ADDR(GPIOI_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PJout(n) BIT_ADDR(GPIOJ_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PJin(n) BIT_ADDR(GPIOJ_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PKout(n) BIT_ADDR(GPIOK_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
#define PKin(n) BIT_ADDR(GPIOK_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
//-----------------------------------------------------------------
// λ<><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><CAB5>GPIO<49><4F><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-----------------------------------------------------------------
extern void SystemClock_Config(u32 plln,u32 pllm,u32 pllp,u32 pllq);// ʱ<><CAB1>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
#endif
//-----------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------

View File

@@ -1,26 +1,9 @@
#include "usart.h"
#include "delay.h"
#include "timer.h"
#include "EC800M.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>os,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>.
#if SYSTEM_SUPPORT_OS
#include "includes.h" //os ʹ<><CAB9>
#endif
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
//ALIENTEK STM32F429<32><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31>ʼ<EFBFBD><CABC>
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
//<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>:2015/9/7
//<2F><EFBFBD><E6B1BE>V1.5
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾ 2009-2019
//All rights reserved
//********************************************************************************
//V1.0<EFBFBD>޸<EFBFBD>˵<EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><><D6A7>printf<74><66><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫѡ<D2AA><D1A1>use MicroLIB
//#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#if 1
#pragma import(__use_no_semihosting)
//<2F><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>֧<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD>
@@ -44,22 +27,86 @@ int fputc(int ch, FILE *f)
}
#endif
#if EN_USART1_RX //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>
u8 RX1_len; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 RX2_len; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
u8 RX3_len; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
#if 1 //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>˽<EFBFBD><CBBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>1<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ע<><D7A2>,<2C><>ȡUSARTx->SR<53>ܱ<EFBFBD><DCB1><EFBFBD>Ī<EFBFBD><C4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
u8 USART_RX_BUF[USART_REC_LEN]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART_REC_LEN<45><4E><EFBFBD>ֽ<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>״̬
//bit15<EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
//bit14<31><34> <09><><EFBFBD>յ<EFBFBD>0x0d
//bit13~0<><30> <09><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>Ŀ
u16 USART_RX_STA=0; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u8 USART_RX_BUF[USART_REC_LEN]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART_REC_LEN<45><4E><EFBFBD>ֽ<EFBFBD>.
u8 USART2_RX_BUF[USART_REC_LEN]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART_REC_LEN<45><4E><EFBFBD>ֽ<EFBFBD>.
//USART3.C<><43><EFBFBD>ݣ<EFBFBD>
u8 USART3_RX_BUF[USART3_MAX_RECV_LEN]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART3_MAX_RECV_LEN<45><4E><EFBFBD>ֽ<EFBFBD>.
u8 USART3_TX_BUF[USART3_MAX_SEND_LEN]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART3_MAX_SEND_LEN<45>ֽ<EFBFBD>
u16 _tmpx_RX_STA,USART_RX_STA=0; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u16 _tmpy_RX_STA,USART2_RX_STA=0; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u16 _tmpz_RX_STA,USART3_RX_STA=0; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u8 aRxBuffer[RXBUFFERSIZE];//HAL<41><4C>ʹ<EFBFBD>õĴ<C3B5><C4B4>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>
UART_HandleTypeDef UART1_Handler; //UART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 aRxBuffer2[RXBUFFERSIZE];//HAL<EFBFBD><EFBFBD>ʹ<EFBFBD>õĴ<EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>
u8 aRxBuffer3[RXBUFFERSIZE];//HAL<41><4C>ʹ<EFBFBD>õĴ<C3B5><C4B4>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>
//<2F><>ʼ<EFBFBD><EFBFBD>IO <20><><EFBFBD><EFBFBD>1
//bound:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void uart_init(u32 bound)
//USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART_HandleTypeDef UART1_Handler;
UART_HandleTypeDef UART2_Handler;
UART_HandleTypeDef UART3_Handler;
extern char rec_1;
UART_BUF buf_uart2; //NBIOT
UART_BUF buf_uart1; //TTL
//<2F><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>
void Uart2_SendStr(char*SendBuf)//<2F><><EFBFBD><EFBFBD>6<EFBFBD><36>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
{
while(*SendBuf)
{
while((USART2->SR&0X40)==0);//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
USART2->DR = (u8) *SendBuf;
SendBuf++;
}
}
void Uart1_SendStr(char*SendBuf)//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
{
while(*SendBuf)
{
while((USART1->SR&0X40)==0);//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
USART1->DR = (u8) *SendBuf;
SendBuf++;
}
}
void UART1_receive_process_event(char ch )
{
if(buf_uart1.index >= BUFLEN)
{
buf_uart1.index = 0 ;
}
else
{
buf_uart1.buf[buf_uart1.index++] = ch;
}
}
void ec200x_receive_process_event(unsigned char ch )
{
if(buf_uart2.index >= BUFLEN)
{
buf_uart2.index = 0 ;
}
else
{
buf_uart2.buf[buf_uart2.index++] = ch;
}
}
//<2F><>ʼ<EFBFBD><CABC>
void usart_init1(u32 bound)
{
//UART <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART1_Handler.Instance=USART1; //USART1
@@ -75,15 +122,38 @@ void uart_init(u32 bound)
}
//UART<52>ײ<EFBFBD><D7B2><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
//<2F>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ᱻHAL_UART_Init()<29><><EFBFBD><EFBFBD>
//huart:<3A><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
void usart_init2(u32 bound)
{
UART2_Handler.Instance=USART2; //USART1
UART2_Handler.Init.BaudRate=bound; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_Handler.Init.WordLength=UART_WORDLENGTH_8B; //<2F>ֳ<EFBFBD>Ϊ8λ<38><CEBB><EFBFBD>ݸ<EFBFBD>ʽ
UART2_Handler.Init.StopBits=UART_STOPBITS_1; //һ<><D2BB>ֹͣλ
UART2_Handler.Init.Parity=UART_PARITY_NONE; //<2F><><EFBFBD><EFBFBD>żУ<C5BC><D0A3>λ
UART2_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE; //<2F><>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_Handler.Init.Mode=UART_MODE_TX_RX; //<2F>շ<EFBFBD>ģʽ
HAL_UART_Init(&UART2_Handler); //HAL_UART_Init()<29><>ʹ<EFBFBD><CAB9>UART1
HAL_UART_Receive_IT(&UART2_Handler, (u8 *)aRxBuffer2, RXBUFFERSIZE);//<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><E1BFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD>־λUART_IT_RXNE<4E><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
void usart_init3(u32 bound)
{
UART3_Handler.Instance=USART3; //UART3
UART3_Handler.Init.BaudRate=bound; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_Handler.Init.WordLength=UART_WORDLENGTH_8B; //<2F>ֳ<EFBFBD>Ϊ8λ<38><CEBB><EFBFBD>ݸ<EFBFBD>ʽ
UART3_Handler.Init.StopBits=UART_STOPBITS_1; //һ<><D2BB>ֹͣλ
UART3_Handler.Init.Parity=UART_PARITY_NONE; //<2F><><EFBFBD><EFBFBD>żУ<C5BC><D0A3>λ
UART3_Handler.Init.Mode=UART_MODE_TX_RX; //<2F>շ<EFBFBD>ģʽ
HAL_UART_Init(&UART3_Handler); //HAL_UART_Init()<29><>ʹ<EFBFBD><CAB9>UART3
HAL_UART_Receive_IT(&UART3_Handler, (u8 *)aRxBuffer3, RXBUFFERSIZE);//<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><E1BFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD>־λUART_IT_RXNE<4E><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//GPIO<49>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
//GPIO<49>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitTypeDef GPIO_Initure;
if(huart->Instance==USART1)//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>1 MSP<53><50>ʼ<EFBFBD><CABC>
{
__HAL_RCC_GPIOA_CLK_ENABLE(); //ʹ<><CAB9>GPIOAʱ<41><CAB1>
@@ -105,12 +175,76 @@ void HAL_UART_MspInit(UART_HandleTypeDef *huart)
HAL_NVIC_SetPriority(USART1_IRQn,3,3); //<2F><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>3
#endif
}
if(huart->Instance==USART2)//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>2 MSP<53><50>ʼ<EFBFBD><CABC>
{
__HAL_RCC_GPIOA_CLK_ENABLE(); //ʹ<><CAB9>GPIOAʱ<41><CAB1>
__HAL_RCC_USART2_CLK_ENABLE(); //ʹ<><CAB9>USART1ʱ<31><CAB1>
GPIO_Initure.Pin=GPIO_PIN_2; //PA2
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_Initure.Pull=GPIO_PULLUP; //<2F><><EFBFBD><EFBFBD>
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH; //<2F><><EFBFBD><EFBFBD>
GPIO_Initure.Alternate=GPIO_AF7_USART2; //<2F><><EFBFBD><EFBFBD>ΪUSART2
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //<2F><>ʼ<EFBFBD><CABC>PA2
GPIO_Initure.Pin=GPIO_PIN_3; //PA3
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //<2F><>ʼ<EFBFBD><CABC>PA3
#if 1
HAL_NVIC_EnableIRQ(USART2_IRQn); //ʹ<><CAB9>USART1<54>ж<EFBFBD>ͨ<EFBFBD><CDA8>
HAL_NVIC_SetPriority(USART2_IRQn,1,1); //<2F><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>3
#endif
}
if(huart->Instance==USART3)//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>3 MSP<53><50>ʼ<EFBFBD><CABC>
{
__HAL_RCC_GPIOB_CLK_ENABLE(); //ʹ<><CAB9>GPIOBʱ<42><CAB1>
__HAL_RCC_USART3_CLK_ENABLE(); //ʹ<><CAB9>USART3ʱ<33><CAB1>
GPIO_Initure.Pin=GPIO_PIN_10; //PB10
GPIO_Initure.Mode = GPIO_MODE_AF_PP; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_Initure.Pull = GPIO_PULLUP; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_Initure.Speed=GPIO_SPEED_FREQ_MEDIUM; //50mhz
GPIO_Initure.Alternate=GPIO_AF7_USART3; //<2F><><EFBFBD><EFBFBD>ΪUSART3
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //<2F><>ʼ<EFBFBD><CABC>PB10
GPIO_Initure.Pin=GPIO_PIN_11; //PB11
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //<2F><>ʼ<EFBFBD><CABC>PB11
#if 1
HAL_NVIC_EnableIRQ(USART3_IRQn); //ʹ<><CAB9>USART3<54>ж<EFBFBD>ͨ<EFBFBD><CDA8>
HAL_NVIC_SetPriority(USART3_IRQn,2,1); //<2F><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>3
#endif
}
//<2F><><EFBFBD><EFBFBD>Ϊusart3.c<><63><EFBFBD><EFBFBD>
USART3_RX_STA=0; //<2F><><EFBFBD><EFBFBD>
}
//<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
//int _time1,_time2,_time3;
if(huart->Instance==USART2)//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>2
{
#define USARTy_RX_STA USART2_RX_STA
#define aRxBuffery aRxBuffer2
#define USARTy_RX_BUF USART2_RX_BUF
USARTy_RX_BUF[USARTy_RX_STA&0X3FFF]=aRxBuffery[0];
USARTy_RX_STA++;
if(USARTy_RX_STA >= (USART_REC_LEN-1))USARTy_RX_STA=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>,<2C><><EFBFBD>¿<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
}
if(huart->Instance==USART3)//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>3
{
USART3_RX_BUF[USART3_RX_STA&0X3FFF]=aRxBuffer3[0]; //0011 1111 1111 1111
USART3_RX_STA++;
if(USART3_RX_STA >= (USART_REC_LEN-1))USART3_RX_STA=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>,<2C><><EFBFBD>¿<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
if(strstr((char*)USART3_RX_BUF, "$GPTXT")){USART3_RX_STA|=0x8000;}
}
}
//<2F><><EFBFBD><EFBFBD>1<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void USART1_IRQHandler(void)
@@ -146,59 +280,60 @@ void USART1_IRQHandler(void)
OSIntExit();
#endif
}
#endif
/****************************************************************************************/
/****************************************************************************************/
/*************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>д<EFBFBD>жϿ<D0B6><CFBF><EFBFBD><EFBFBD>߼<EFBFBD>*********************/
/****************************************************************************************
***************************************************************************************************
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
void USART2_IRQHandler(void)
{
if(huart->Instance==USART1)//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>1
{
if((USART_RX_STA&0x8000)==0)//<2F><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
{
if(USART_RX_STA&0x4000)//<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>0x0d
{
if(aRxBuffer[0]!=0x0a)USART_RX_STA=0;//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD>,<2C><><EFBFBD>¿<EFBFBD>ʼ
else USART_RX_STA|=0x8000; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
else //<2F><>û<EFBFBD>յ<EFBFBD>0X0D
{
if(aRxBuffer[0]==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=aRxBuffer[0] ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>,<2C><><EFBFBD>¿<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
}
}
}
}
}
//<2F><><EFBFBD><EFBFBD>1<EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void USART1_IRQHandler(void)
{
u32 timeout=0;
u32 maxDelay=0x1FFFF;
#if SYSTEM_SUPPORT_OS //ʹ<><CAB9>OS
OSIntEnter();
#endif
HAL_UART_IRQHandler(&UART1_Handler); //<2F><><EFBFBD><EFBFBD>HAL<41><4C><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
while (HAL_UART_GetState(&UART1_Handler) != HAL_UART_STATE_READY);//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
while(HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE) != HAL_OK);//һ<>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>RxXferCountΪ1
HAL_UART_IRQHandler(&UART2_Handler); //<2F><><EFBFBD><EFBFBD>HAL<41><4C><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
timeout=0;
while (HAL_UART_GetState(&UART2_Handler) != HAL_UART_STATE_READY)//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
{
timeout++;////<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
if(timeout>maxDelay) break;
}
timeout=0;
while(HAL_UART_Receive_IT(&UART2_Handler, (u8 *)aRxBuffer2, RXBUFFERSIZE) != HAL_OK)//һ<>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>RxXferCountΪ1
{
timeout++; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
if(timeout>maxDelay) break;
}
#if SYSTEM_SUPPORT_OS //ʹ<><CAB9>OS
OSIntExit();
#endif
}
**************************************/
}
void USART3_IRQHandler(void)
{
u32 timeout=0;
#if SYSTEM_SUPPORT_OS //ʹ<><CAB9>OS
OSIntEnter();
#endif
HAL_UART_IRQHandler(&UART3_Handler); //<2F><><EFBFBD><EFBFBD>HAL<41><4C><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
timeout=0;
u32 maxDelay=0x1FFFF;
while (HAL_UART_GetState(&UART3_Handler) != HAL_UART_STATE_READY)//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
{
timeout++;////<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
if(timeout>maxDelay) {break;}
}
timeout=0;
while(HAL_UART_Receive_IT(&UART3_Handler, (u8 *)aRxBuffer3, RXBUFFERSIZE) != HAL_OK)//һ<>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>RxXferCountΪ1
{
timeout++; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
if(timeout>maxDelay) {break;}
}
#if SYSTEM_SUPPORT_OS //ʹ<><CAB9>OS
OSIntExit();
#endif
}
#endif

View File

@@ -1,6 +1,7 @@
#ifndef _USART_H
#define _USART_H
#include "sys.h"
#include "string.h"
#include "stdio.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
@@ -16,18 +17,54 @@
//********************************************************************************
//V1.0<EFBFBD>޸<EFBFBD>˵<EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
#define USART_REC_LEN 200 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> 200
#define USART_REC_LEN 2000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> 200
#define EN_USART1_RX 1 //ʹ<>ܣ<EFBFBD>1<EFBFBD><31>/<2F><>ֹ<EFBFBD><D6B9>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
extern u8 USART_RX_BUF[USART_REC_LEN]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART_REC_LEN<45><4E><EFBFBD>ֽ<EFBFBD><>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>з<EFBFBD>
extern u16 USART_RX_STA; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
extern UART_HandleTypeDef UART1_Handler; //UART<52><54><EFBFBD><EFBFBD>
extern u16 USART_RX_STA; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
extern u16 USART2_RX_STA; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
extern u16 USART3_RX_STA; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
extern UART_HandleTypeDef UART1_Handler;//UART<52><54><EFBFBD><EFBFBD>
extern UART_HandleTypeDef UART2_Handler;
extern UART_HandleTypeDef UART3_Handler;
#define RXBUFFERSIZE 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
extern u8 aRxBuffer[RXBUFFERSIZE];//HAL<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Buffer
extern u8 USART_RX_BUF[USART_REC_LEN]; //<EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART_REC_LEN<45><4E><EFBFBD>ֽ<EFBFBD>.
extern u8 USART2_RX_BUF[USART_REC_LEN]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART_REC_LEN<45><4E><EFBFBD>ֽ<EFBFBD>.
extern u8 aRxBuffer1[RXBUFFERSIZE];//HAL<41><4C>ʹ<EFBFBD>õĴ<C3B5><C4B4>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>
extern u8 aRxBuffer2[RXBUFFERSIZE];//HAL<41><4C>ʹ<EFBFBD>õĴ<C3B5><C4B4>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD>
extern u8 aRxBuffer3[RXBUFFERSIZE];//HAL<41><4C>ʹ<EFBFBD>õĴ<C3B5><C4B4>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD> USART3_MAX_RECV_LEN
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB4AE><EFBFBD>жϽ<D0B6><CFBD>գ<EFBFBD><D5A3>벻Ҫע<D2AA><D7A2><EFBFBD><EFBFBD><EFBFBD>º궨<C2BA><EAB6A8>
void uart_init(u32 bound);
void usart_init1(u32 bound);
void usart_init2(u32 bound);
void usart_init3(u32 bound);
extern u8 RX1_len;
//USART3.H<><48><EFBFBD><EFBFBD>
#define USART3_MAX_RECV_LEN 2048 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
#define USART3_MAX_SEND_LEN 600 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
#define USART3_RX_EN 1 //0,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;1,<2C><><EFBFBD><EFBFBD>.
extern u8 USART3_RX_BUF[USART3_MAX_RECV_LEN]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART3_MAX_RECV_LEN<45>ֽ<EFBFBD>
extern u8 USART3_TX_BUF[USART3_MAX_SEND_LEN]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>,<2C><><EFBFBD><EFBFBD>USART3_MAX_SEND_LEN<45>ֽ<EFBFBD>
//EM800M_USART.H<><48><EFBFBD>ݣ<EFBFBD>
#define BUFLEN 10240 //<2F><><EFBFBD><EFBFBD><E9BBBA><EFBFBD><EFBFBD>С
typedef struct _UART_BUF
{
char buf [BUFLEN+1];
unsigned int index ;
}UART_BUF;
void Uart2_SendStr(char*SendBuf);
void Uart1_SendStr(char*SendBuf);
void USART2_Send(char *Data,uint16_t Len);
void Clear_Buffer_UART1(void);
#endif