From 7a2ff321965f1f24f3047fedd44a83f451f1f793 Mon Sep 17 00:00:00 2001 From: QuakeGod <QuakeGod@sina.com> Date: 星期三, 01 二月 2023 10:58:10 +0800 Subject: [PATCH] radio add new device type --- Src/functions.c | 63 +++++++++++++++++++------------ 1 files changed, 38 insertions(+), 25 deletions(-) diff --git a/Src/functions.c b/Src/functions.c index 7d7c303..7409ad5 100644 --- a/Src/functions.c +++ b/Src/functions.c @@ -8,7 +8,7 @@ #include "functions.h" #include "string.h" #include "stm32f0xx_hal.h" -#if (BOARD_TYPE == 12) +#if (BOARD_TYPE == 14) #include "fp0.h" #endif extern __IO uint32_t uwTick; @@ -19,16 +19,16 @@ unsigned int TickPrioduS; // volatile unsigned int nCurTick=0; volatile unsigned int CurTickuS=0; -//volatile unsigned int ThisRunTime=0; //开机时间 -//volatile unsigned int TotalRunTime=0; //总开机时间 -//volatile unsigned int PwrCount=0; //开机次数 -unsigned short ClkuS; //每个Clk的nS数, +//volatile unsigned int ThisRunTime=0; //寮�鏈烘椂闂� +//volatile unsigned int TotalRunTime=0; //鎬诲紑鏈烘椂闂� +//volatile unsigned int PwrCount=0; //寮�鏈烘鏁� +unsigned short ClkuS; //姣忎釜Clk鐨刵S鏁帮紝 int InituS(int TickFreq1) { - TickPrioduS=1000000/TickFreq1; //每个SysTick的微秒数 - CoreClkMHz=HAL_RCC_GetHCLKFreq()/1000000; //=SystemCoreClock/1000000;每uS的时钟数 - TickPriodClk=SystemCoreClock/TickFreq1; //每个SysTick的时钟数 + TickPrioduS=1000000/TickFreq1; //姣忎釜SysTick鐨勫井绉掓暟 + CoreClkMHz=HAL_RCC_GetHCLKFreq()/1000000; //=SystemCoreClock/1000000;姣弖S鐨勬椂閽熸暟 + TickPriodClk=SystemCoreClock/TickFreq1; //姣忎釜SysTick鐨勬椂閽熸暟 ClkuS=(1000000LL*65536)/SystemCoreClock; CurTickuS=TickPrioduS+100u; return 0; @@ -54,6 +54,7 @@ // unsigned short Clk1=SysTick->VAL; return nCurTick; } + const unsigned short crc16_table[256] = { 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, @@ -96,7 +97,7 @@ { crc_reg = (crc_reg >> 8) ^ crc16_table[(crc_reg ^ *data++) & 0xff]; } -return (~crc_reg) & 0xFFFF; + return (~crc_reg) & 0xFFFF; } const uint16_t polynom = 0xA001; @@ -269,7 +270,7 @@ void PendSvCallBack() { -#if (BOARD_TYPE == 12) +#if (BOARD_TYPE == 14) ///* if (bSPI1RecvDone) { @@ -280,7 +281,7 @@ #endif if (Uart2Stat.bPacketRecved) { - ParsePacket(2, (pPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen); + KBusParsePacket(2, (pPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen); Uart2RecvBuf1DataLen=0; Uart2Stat.bPacketRecved=0; Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1)); @@ -294,7 +295,7 @@ if (LL_SPI_IsActiveFlag_RXNE(SPI1)) { value = LL_SPI_ReceiveData8( SPI1); -#if (BOARD_TYPE == 12) +#if (BOARD_TYPE == 14) KMem.SDD[62]++; KMem.SDT[122]++; if (!bSPI1Sending) @@ -443,7 +444,7 @@ */ void ToggleRunLed() { LL_GPIO_TogglePin(GPIOC,LL_GPIO_PIN_13);} void ToggleErrLed() { LL_GPIO_TogglePin(GPIOC,LL_GPIO_PIN_14);} -#if (BOARD_TYPE == 12) +#if (BOARD_TYPE == 14) void ToggleOutStat() { LL_GPIO_TogglePin(GPIOC,LL_GPIO_PIN_15);} void SetOutStat(uchar bOn) @@ -611,8 +612,15 @@ return Input165_R(8); case 11: return Input165_R(8); - case 12: - return 0; //FP0 + case 13: + return Input165_R(16); + case 14: + return 0; //FP0 + case 15: + return Input165_R(16); + case 16: + return Input165_R(8); + default: break; } @@ -696,13 +704,16 @@ return ReadConfig_5(); //New Slave 8 in 8 o case 9: case 10: - return ReadConfig_5(); //New Slave 8 in 8 o + return ReadConfig_5(); //New Master Slave 8 in 8 o case 11: return ReadConfig_11(); //Mini Board - case 12: - return (~(LL_GPIO_ReadInputPort(GPIOA)>>4))&0x0f; //FP0 case 13: return ReadConfig_5(); + case 14: + return (~(LL_GPIO_ReadInputPort(GPIOA)>>4))&0x0f; //FP0 + case 15: + case 16: + return ReadConfig_5(); //Wireless Master Slave 8 in 8 o default: return 0; @@ -725,7 +736,7 @@ void Output595_8(unsigned int cc) { //unsigned char i; -;// 74HC595输出程序,输出8位 +;// 74HC595杈撳嚭绋嬪簭锛岃緭鍑�8浣� // cc=~0x3f; __disable_irq(); STRCLK2_1(); @@ -747,10 +758,11 @@ STRCLK2_1(); __enable_irq(); } + void Output595_16(unsigned int cc) { //unsigned char i; -;// 74HC595输出程序,输出8位 +;// 74HC595杈撳嚭绋嬪簭锛岃緭鍑�8浣� // cc=~0x3f; __disable_irq(); STRCLK2_1(); @@ -843,16 +855,16 @@ void PutOutput(unsigned int Y) { -#if (BOARD_TYPE==12) +#if (BOARD_TYPE == 14) return ; #endif PutOutputSPI2(Y); //Output595_16(Y); } -#if (BOARD_TYPE == 9 || BOARD_TYPE == 10 ) +#if (BOARD_TYPE == 9 || BOARD_TYPE == 10 || BOARD_TYPE == 15 || BOARD_TYPE == 16) //#pragma message("9,10") - // V4.2 管脚排列向右移动了一位。 + // V4.2 绠¤剼鎺掑垪鍚戝彸绉诲姩浜嗕竴浣嶃�� #define SRCLK1_0() LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_1) #define SRCLK1_1() LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_1) #define STRCLK1_0() LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_2) @@ -861,7 +873,7 @@ #define OE1_1() LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_10) #define SER1_0() LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_11) #define SER1_1() LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_11) -#else //按照原来的管脚排列 +#else //鎸夌収鍘熸潵鐨勭鑴氭帓鍒� #define SRCLK1_0() LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_0) #define SRCLK1_1() LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_0) #define STRCLK1_0() LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_1) @@ -878,10 +890,11 @@ if (bEnable) {OE1_0();} else {OE1_1();} } + void displayInput(unsigned int cc) { //unsigned char i; -;// 74HC595输出程序,输出8位 +;// 74HC595杈撳嚭绋嬪簭锛岃緭鍑�8浣� // cc=~0x3f; __disable_irq(); STRCLK1_1(); -- Gitblit v1.9.1