更新evt v1.3
This commit is contained in:
parent
513fbdfdbf
commit
afa04bd401
|
@ -215,15 +215,15 @@ int main(void)
|
|||
BSP_KEY_Init(app_task_handler);
|
||||
|
||||
// IWDG_Init(1500);
|
||||
DelayMs(1000 * 3);
|
||||
// DelayMs(1000 * 3);
|
||||
|
||||
BSP_ADC_Init();
|
||||
|
||||
BSP_VAVLE_Init();
|
||||
|
||||
HAL_Init();
|
||||
GAPRole_PeripheralInit();
|
||||
Peripheral_Init();
|
||||
// HAL_Init();
|
||||
// GAPRole_PeripheralInit();
|
||||
// Peripheral_Init();
|
||||
|
||||
BSP_BlockSleep();
|
||||
BSP_RequestBoost();
|
||||
|
|
|
@ -254,7 +254,7 @@ void BSP_KEY_Init(app_task_evt_handler_t handler)
|
|||
// MCU_LDECT
|
||||
// GPIOA_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_PU);
|
||||
|
||||
GPIOB_ModeCfg(GPIO_Pin_16, GPIO_ModeIN_Floating);
|
||||
// GPIOB_ModeCfg(GPIO_Pin_16, GPIO_ModeIN_Floating);
|
||||
|
||||
GPIOB_ModeCfg(GPIO_Pin_0, GPIO_ModeIN_Floating);
|
||||
// GPIOB_ModeCfg(GPIO_Pin_1, GPIO_ModeIN_Floating);
|
||||
|
|
52
HAL/LED.c
52
HAL/LED.c
|
@ -1,3 +1,13 @@
|
|||
/*
|
||||
* @Author : stark1898y 1658608470@qq.com
|
||||
* @Date : 2024-12-30 10:11:28
|
||||
* @LastEditors : stark1898y 1658608470@qq.com
|
||||
* @LastEditTime : 2025-03-27 10:11:31
|
||||
* @FilePath : \BLE_TYQ_CH584M\HAL\LED.c
|
||||
* @Description :
|
||||
*
|
||||
* Copyright (c) 2025 by yzy, All Rights Reserved.
|
||||
*/
|
||||
/********************************** (C) COPYRIGHT *******************************
|
||||
* File Name : LED.c
|
||||
* Author : WCH
|
||||
|
@ -14,8 +24,6 @@
|
|||
/* Í·Îļþ°üº¬ */
|
||||
#include "HAL.h"
|
||||
|
||||
#include "bsp_beep_led_emv.h"
|
||||
|
||||
/* LED control structure */
|
||||
typedef struct
|
||||
{
|
||||
|
@ -60,16 +68,10 @@ void HalLedOnOff(uint8_t leds, uint8_t mode);
|
|||
void HAL_LedInit(void)
|
||||
{
|
||||
/* Initialize all LEDs to OFF */
|
||||
LEDR_DDR;
|
||||
LEDG_DDR;
|
||||
LEDY_DDR;
|
||||
BEEP_DDR;
|
||||
|
||||
LED1_DDR;
|
||||
HalLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);
|
||||
|
||||
BOOST_EN;
|
||||
// just test
|
||||
HalLedBlink(HAL_LED_R, 10, 50, 200);
|
||||
HalLedBlink(HAL_LED_1, 10, 30, 4000);
|
||||
/* Initialize sleepActive to FALSE */
|
||||
HalLedStatusControl.sleepActive = FALSE;
|
||||
}
|
||||
|
@ -109,7 +111,7 @@ uint8_t HalLedSet(uint8_t leds, uint8_t mode)
|
|||
case HAL_LED_MODE_OFF:
|
||||
case HAL_LED_MODE_TOGGLE:
|
||||
{
|
||||
led = HAL_LED_R;
|
||||
led = HAL_LED_1;
|
||||
leds &= HAL_LED_ALL;
|
||||
sts = HalLedStatusControl.HalLedControlTable;
|
||||
while(leds)
|
||||
|
@ -160,7 +162,7 @@ void HalLedBlink(uint8_t leds, uint8_t numBlinks, uint8_t percent, uint16_t peri
|
|||
{
|
||||
if(percent < 100)
|
||||
{
|
||||
led = HAL_LED_R;
|
||||
led = HAL_LED_1;
|
||||
leds &= HAL_LED_ALL;
|
||||
sts = HalLedStatusControl.HalLedControlTable;
|
||||
while(leds)
|
||||
|
@ -212,7 +214,7 @@ void HalLedUpdate(void)
|
|||
HalLedControl_t *sts;
|
||||
|
||||
next = 0;
|
||||
led = HAL_LED_R;
|
||||
led = HAL_LED_1;
|
||||
leds = HAL_LED_ALL;
|
||||
sts = HalLedStatusControl.HalLedControlTable;
|
||||
|
||||
|
@ -299,48 +301,48 @@ void HalLedUpdate(void)
|
|||
*/
|
||||
void HalLedOnOff(uint8_t leds, uint8_t mode)
|
||||
{
|
||||
if(leds & HAL_LED_R)
|
||||
if(leds & HAL_LED_1)
|
||||
{
|
||||
if(mode == HAL_LED_MODE_ON)
|
||||
{
|
||||
HAL_TURN_ON_LEDR();
|
||||
HAL_TURN_ON_LED1();
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_TURN_OFF_LEDR();
|
||||
HAL_TURN_OFF_LED1();
|
||||
}
|
||||
}
|
||||
if(leds & HAL_LED_G)
|
||||
if(leds & HAL_LED_2)
|
||||
{
|
||||
if(mode == HAL_LED_MODE_ON)
|
||||
{
|
||||
HAL_TURN_ON_LEDG();
|
||||
HAL_TURN_ON_LED2();
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_TURN_OFF_LEDG();
|
||||
HAL_TURN_OFF_LED2();
|
||||
}
|
||||
}
|
||||
if(leds & HAL_LED_Y)
|
||||
if(leds & HAL_LED_3)
|
||||
{
|
||||
if(mode == HAL_LED_MODE_ON)
|
||||
{
|
||||
HAL_TURN_ON_LEDY();
|
||||
HAL_TURN_ON_LED3();
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_TURN_OFF_LEDY();
|
||||
HAL_TURN_OFF_LED3();
|
||||
}
|
||||
}
|
||||
if(leds & HAL_LED_BEEP)
|
||||
if(leds & HAL_LED_4)
|
||||
{
|
||||
if(mode == HAL_LED_MODE_ON)
|
||||
{
|
||||
HAL_TURN_ON_BEEP();
|
||||
HAL_TURN_ON_LED4();
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_TURN_OFF_BEEP();
|
||||
HAL_TURN_OFF_LED4();
|
||||
}
|
||||
}
|
||||
/* Remember current state */
|
||||
|
|
10
HAL/MCU.c
10
HAL/MCU.c
|
@ -1,3 +1,13 @@
|
|||
/*
|
||||
* @Author : stark1898y 1658608470@qq.com
|
||||
* @Date : 2024-12-30 10:11:28
|
||||
* @LastEditors : stark1898y 1658608470@qq.com
|
||||
* @LastEditTime : 2025-03-27 10:11:40
|
||||
* @FilePath : \BLE_TYQ_CH584M\HAL\MCU.c
|
||||
* @Description :
|
||||
*
|
||||
* Copyright (c) 2025 by yzy, All Rights Reserved.
|
||||
*/
|
||||
/********************************** (C) COPYRIGHT *******************************
|
||||
* File Name : MCU.c
|
||||
* Author : WCH
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
* @Author : stark1898y 1658608470@qq.com
|
||||
* @Date : 2024-12-30 10:11:28
|
||||
* @LastEditors : stark1898y 1658608470@qq.com
|
||||
* @LastEditTime : 2024-12-30 10:35:43
|
||||
* @LastEditTime : 2025-03-27 10:11:52
|
||||
* @FilePath : \BLE_TYQ_CH584M\HAL\RTC.c
|
||||
* @Description :
|
||||
*
|
||||
* Copyright (c) 2024 by yzy, All Rights Reserved.
|
||||
* Copyright (c) 2025 by yzy, All Rights Reserved.
|
||||
*/
|
||||
/********************************** (C) COPYRIGHT *******************************
|
||||
* File Name : RTC.c
|
||||
|
|
23577
LIB/CH584BLE_ROMx.hex
23577
LIB/CH584BLE_ROMx.hex
File diff suppressed because it is too large
Load Diff
23577
LIB/CH585BLE_ROMx.hex
23577
LIB/CH585BLE_ROMx.hex
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +1,8 @@
|
|||
/********************************** (C) COPYRIGHT ******************************
|
||||
* File Name : CH58xBLE_LIB.H
|
||||
* Author : WCH
|
||||
* Version : v1.20
|
||||
* Date : 2024/04/10
|
||||
* Version : v1.30
|
||||
* Date : 2025/02/07
|
||||
* Description : head file(ch585/ch584)
|
||||
* Copyright (c) 2023 Nanjing Qinheng Microelectronics Co., Ltd.
|
||||
* Attention: This software (modified or not) and binary are used for
|
||||
|
@ -153,7 +153,7 @@ typedef struct
|
|||
/*********************************************************************
|
||||
* GLOBAL MACROS
|
||||
*/
|
||||
#define VER_FILE "CH585_BLE_LIB_V1.2"
|
||||
#define VER_FILE "CH585_BLE_LIB_V1.3"
|
||||
extern const uint8_t VER_LIB[]; // LIB version
|
||||
#define SYSTEM_TIME_MICROSEN 625 // unit of process event timer is 625us
|
||||
#define MS1_TO_SYSTEM_TIME(x) ((x)*1000/SYSTEM_TIME_MICROSEN) // transform unit in ms to unit in 625us ( attentional bias )
|
||||
|
@ -2352,6 +2352,8 @@ typedef int (*pfnEcc_alg_f5_t)( uint8_t *w, uint8_t *n1, uint8_t *n2,
|
|||
typedef int (*pfnEcc_alg_f6_t)( uint8_t *w, uint8_t *n1, uint8_t *n2, uint8_t *r,
|
||||
uint8_t *iocap, uint8_t a1t, uint8_t *a1, uint8_t a2t, uint8_t *a2, uint8_t *check );
|
||||
|
||||
typedef void (*pfnSm_randkey_t)( uint8_t *randkey, uint8_t keylen );
|
||||
|
||||
/**
|
||||
* Callback Registration Structure
|
||||
*/
|
||||
|
@ -2363,6 +2365,7 @@ typedef struct
|
|||
pfnEcc_alg_g2_t alg_g2; //!< LE Secure Connections numeric comparison value generation function g2
|
||||
pfnEcc_alg_f5_t alg_f5; //!< LE Secure Connect ions key generation function f5
|
||||
pfnEcc_alg_f6_t alg_f6; //!< LE Secure Connections check value generation function f6
|
||||
pfnSm_randkey_t randkey;
|
||||
} gapEccCBs_t;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/********************************** (C) COPYRIGHT ******************************
|
||||
* File Name : CH58xBLE_ROM.H
|
||||
* Author : WCH
|
||||
* Version : v1.20
|
||||
* Date : 2024/04/10
|
||||
* Version : v1.30
|
||||
* Date : 2025/02/07
|
||||
* Description : head file(ch585/ch584)
|
||||
* Address Space
|
||||
* CODE: 00040000H - 0006FFFFH 192K
|
||||
|
@ -155,7 +155,7 @@ typedef struct
|
|||
/*********************************************************************
|
||||
* GLOBAL MACROS
|
||||
*/
|
||||
#define VER_FILE "CH585_BLE_LIB_V1.2"
|
||||
#define VER_FILE "CH585_BLE_LIB_V1.3"
|
||||
extern const uint8_t VER_LIB[]; // LIB version
|
||||
#define SYSTEM_TIME_MICROSEN 625 // unit of process event timer is 625us
|
||||
#define MS1_TO_SYSTEM_TIME(x) ((x)*1000/SYSTEM_TIME_MICROSEN) // transform unit in ms to unit in 625us ( attentional bias )
|
||||
|
@ -2354,6 +2354,8 @@ typedef int (*pfnEcc_alg_f5_t)( uint8_t *w, uint8_t *n1, uint8_t *n2,
|
|||
typedef int (*pfnEcc_alg_f6_t)( uint8_t *w, uint8_t *n1, uint8_t *n2, uint8_t *r,
|
||||
uint8_t *iocap, uint8_t a1t, uint8_t *a1, uint8_t a2t, uint8_t *a2, uint8_t *check );
|
||||
|
||||
typedef void (*pfnSm_randkey_t)( uint8_t *randkey, uint8_t keylen );
|
||||
|
||||
/**
|
||||
* Callback Registration Structure
|
||||
*/
|
||||
|
@ -2365,6 +2367,7 @@ typedef struct
|
|||
pfnEcc_alg_g2_t alg_g2; //!< LE Secure Connections numeric comparison value generation function g2
|
||||
pfnEcc_alg_f5_t alg_f5; //!< LE Secure Connect ions key generation function f5
|
||||
pfnEcc_alg_f6_t alg_f6; //!< LE Secure Connections check value generation function f6
|
||||
pfnSm_randkey_t randkey;
|
||||
} gapEccCBs_t;
|
||||
|
||||
/**
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -187,7 +187,7 @@ typedef struct
|
|||
uint8_t devType; //!< reserved
|
||||
uint16_t timeout; //!< Connection communication timeout period (in about 1 ms)
|
||||
uint8_t OwnInfo[6]; //!< Local Information
|
||||
uint8_t PeerInfo[6]; //!< Peer information
|
||||
uint8_t PeerInfo[6]; //!< resv
|
||||
pfnRfRoleBoundCB rfBoundCB;
|
||||
uint32_t ChannelMap; //!< indicating Used and Unused data channels.Every channel is represented with a
|
||||
//!< bit positioned as per the data channel index,The LSB represents data channel index 0
|
||||
|
|
|
@ -1,13 +1,3 @@
|
|||
/*
|
||||
* @Author : stark1898y 1658608470@qq.com
|
||||
* @Date : 2024-12-30 10:28:39
|
||||
* @LastEditors : stark1898y 1658608470@qq.com
|
||||
* @LastEditTime : 2024-12-30 10:40:14
|
||||
* @FilePath : \BLE_TYQ_CH584M\RVMSIS\core_riscv.h
|
||||
* @Description :
|
||||
*
|
||||
* Copyright (c) 2024 by yzy, All Rights Reserved.
|
||||
*/
|
||||
/********************************** (C) COPYRIGHT *******************************
|
||||
* File Name : core_riscv.h
|
||||
* Author : WCH
|
||||
|
|
|
@ -201,11 +201,11 @@ __highcode_init:
|
|||
addi a0, a0, 4
|
||||
bltu a0, a1, 1b
|
||||
2:
|
||||
/* 用户模式中断使能 */
|
||||
/*预取使能*/
|
||||
/* User Mode Interrupt Enable */
|
||||
/*Prefetch Enable*/
|
||||
li t0, 0x25
|
||||
csrw 0xbc0, t0
|
||||
/* 打开嵌套中断、硬件压栈功能 */
|
||||
/* Enable Nested Interrupts and Hardware Stacking Function */
|
||||
li t0, 0x3
|
||||
csrw 0x804, t0
|
||||
li t0, 0x1
|
||||
|
@ -215,7 +215,7 @@ __highcode_init:
|
|||
csrw mstatus, t0
|
||||
la t0, _vector_base
|
||||
|
||||
/* 配置向量表模式为绝对地址模式 */
|
||||
/* Configure the Vector Table Mode to Absolute Address Mode */
|
||||
ori t0, t0, 3
|
||||
csrw mtvec, t0
|
||||
|
||||
|
|
|
@ -247,7 +247,7 @@ int adc_to_temperature_celsius(uint16_t adc_val)
|
|||
uint32_t C25 = 0;
|
||||
int temp;
|
||||
|
||||
C25 = (*((PUINT32)ROM_CFG_TMP_25C));
|
||||
C25 = (*((uint32_t*)ROM_CFG_TMP_25C));
|
||||
|
||||
/* current temperature = standard temperature + (adc deviation * adc linearity coefficient) */
|
||||
temp = (((C25 >> 16) & 0xFFFF) ? ((C25 >> 16) & 0xFFFF) : 25) + \
|
||||
|
|
|
@ -200,13 +200,13 @@ void LSECFG_Capacitance(LSECapTypeDef c)
|
|||
*/
|
||||
void Calibration_LSI(Cali_LevelTypeDef cali_Lv)
|
||||
{
|
||||
UINT64 i;
|
||||
uint64_t i;
|
||||
long long cnt_offset;
|
||||
UINT8 retry = 0;
|
||||
UINT8 retry_all = 0;
|
||||
INT32 freq_sys;
|
||||
UINT32 cnt_32k = 0;
|
||||
UINT32 irqv = 0;
|
||||
uint8_t retry = 0;
|
||||
uint8_t retry_all = 0;
|
||||
int32_t freq_sys;
|
||||
uint32_t cnt_32k = 0;
|
||||
uint32_t irqv = 0;
|
||||
|
||||
freq_sys = GetSysClock();
|
||||
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
*
|
||||
* @return none
|
||||
*/
|
||||
void I2C_Init(I2C_ModeTypeDef I2C_Mode, UINT32 I2C_ClockSpeed, I2C_DutyTypeDef I2C_DutyCycle,
|
||||
I2C_AckTypeDef I2C_Ack, I2C_AckAddrTypeDef I2C_AckAddr, UINT16 I2C_OwnAddress1)
|
||||
void I2C_Init(I2C_ModeTypeDef I2C_Mode, uint32_t I2C_ClockSpeed, I2C_DutyTypeDef I2C_DutyCycle,
|
||||
I2C_AckTypeDef I2C_Ack, I2C_AckAddrTypeDef I2C_AckAddr, uint16_t I2C_OwnAddress1)
|
||||
{
|
||||
uint32_t sysClock;
|
||||
uint16_t tmpreg;
|
||||
|
|
|
@ -276,8 +276,14 @@ void LowPower_Idle(void)
|
|||
__HIGH_CODE
|
||||
void LowPower_Halt(void)
|
||||
{
|
||||
uint32_t i;
|
||||
uint8_t x32Mpw;
|
||||
uint16_t clk_sys_cfg;
|
||||
uint8_t flash_cfg,flash_sck;
|
||||
|
||||
clk_sys_cfg = R16_CLK_SYS_CFG;
|
||||
flash_cfg = R8_FLASH_CFG;
|
||||
flash_sck = R8_FLASH_SCK;
|
||||
FLASH_ROM_SW_RESET();
|
||||
R8_FLASH_CTRL = 0x04; //flash关闭
|
||||
x32Mpw = R8_XT32M_TUNE;
|
||||
|
@ -292,17 +298,51 @@ void LowPower_Halt(void)
|
|||
sys_safe_access_enable();
|
||||
R8_XT32M_TUNE = x32Mpw;
|
||||
sys_safe_access_disable();
|
||||
// sys_safe_access_enable();
|
||||
// R8_PLL_CONFIG |= (1 << 5);
|
||||
// sys_safe_access_disable();
|
||||
|
||||
if(R16_CLK_SYS_CFG & RB_OSC32M_SEL) //使用外部32M
|
||||
{
|
||||
sys_safe_access_enable();
|
||||
R8_PLL_CONFIG |= (1 << 5);
|
||||
R8_SLP_POWER_CTRL |= 0x40;
|
||||
R8_FLASH_CFG = 0X57;
|
||||
R8_FLASH_SCK = R8_FLASH_SCK & (~(1<<4));
|
||||
R16_CLK_SYS_CFG = CLK_SOURCE_HSE_8MHz;
|
||||
sys_safe_access_disable();
|
||||
}
|
||||
else//使用内部16M
|
||||
{
|
||||
sys_safe_access_enable();
|
||||
R8_FLASH_CFG = 0X57;
|
||||
R8_FLASH_SCK = R8_FLASH_SCK & (~(1<<4));
|
||||
R16_CLK_SYS_CFG = CLK_SOURCE_HSI_4MHz;
|
||||
sys_safe_access_disable();
|
||||
}
|
||||
|
||||
PFIC->SCTLR |= (1 << 2); //deep sleep
|
||||
__WFI();
|
||||
__nop();
|
||||
__nop();
|
||||
|
||||
if((!(clk_sys_cfg & RB_OSC32M_SEL)) && (clk_sys_cfg & 0x100)) //使用内部16M
|
||||
{
|
||||
i = 40;
|
||||
do
|
||||
{
|
||||
__nop();
|
||||
}while(--i);
|
||||
}
|
||||
|
||||
sys_safe_access_enable();
|
||||
R8_PLL_CONFIG &= ~(1 << 5);
|
||||
R8_FLASH_CFG = flash_cfg;
|
||||
R8_FLASH_SCK = flash_sck;
|
||||
R16_CLK_SYS_CFG = clk_sys_cfg;
|
||||
sys_safe_access_disable();
|
||||
|
||||
// sys_safe_access_enable();
|
||||
// R8_PLL_CONFIG &= ~(1 << 5);
|
||||
// sys_safe_access_disable();
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -319,18 +359,19 @@ void LowPower_Halt(void)
|
|||
__HIGH_CODE
|
||||
void LowPower_Sleep(uint16_t rm)
|
||||
{
|
||||
__attribute__((aligned(4))) uint8_t MacAddr[6] = {0};
|
||||
uint8_t x32Mpw;
|
||||
uint16_t power_plan;
|
||||
uint16_t clk_sys_cfg;
|
||||
uint16_t hfck_pwr_ctrl;
|
||||
|
||||
GetMACAddress(MacAddr);
|
||||
uint8_t flash_cfg,flash_sck;
|
||||
uint32_t i;
|
||||
|
||||
clk_sys_cfg = R16_CLK_SYS_CFG;
|
||||
hfck_pwr_ctrl = R8_HFCK_PWR_CTRL;
|
||||
x32Mpw = R8_XT32M_TUNE;
|
||||
x32Mpw = (x32Mpw & 0xfc) | 0x03; // 150%额定电流
|
||||
flash_cfg = R8_FLASH_CFG;
|
||||
flash_sck = R8_FLASH_SCK;
|
||||
|
||||
sys_safe_access_enable();
|
||||
R8_BAT_DET_CTRL = 0; // 关闭电压监控
|
||||
|
@ -339,31 +380,38 @@ void LowPower_Sleep(uint16_t rm)
|
|||
R8_XT32M_TUNE = x32Mpw;
|
||||
sys_safe_access_disable();
|
||||
|
||||
sys_safe_access_enable();
|
||||
R16_POWER_PLAN &= ~RB_XT_PRE_EN;
|
||||
sys_safe_access_disable();
|
||||
|
||||
PFIC->SCTLR |= (1 << 2); //deep sleep
|
||||
|
||||
power_plan = R16_POWER_PLAN & (RB_PWR_DCDC_EN | RB_PWR_DCDC_PRE);
|
||||
power_plan |= RB_PWR_PLAN_EN | RB_PWR_CORE | rm | (2<<11);
|
||||
power_plan &= ~RB_XT_PRE_EN;
|
||||
|
||||
sys_safe_access_enable();
|
||||
R16_POWER_PLAN = power_plan;
|
||||
R8_HFCK_PWR_CTRL |= RB_CLK_RC16M_PON; //睡眠需要打开内部HSI
|
||||
sys_safe_access_disable();
|
||||
if(R16_CLK_SYS_CFG & RB_OSC32M_SEL) //使用外部32M
|
||||
{
|
||||
sys_safe_access_enable();
|
||||
if(rm & RB_XT_PRE_EN)
|
||||
{
|
||||
R8_SLP_POWER_CTRL |= 0x41;
|
||||
R8_SLP_POWER_CTRL |= 0x40;
|
||||
}
|
||||
else
|
||||
{
|
||||
R8_SLP_POWER_CTRL |= 0x40;
|
||||
R8_SLP_POWER_CTRL |= 0x41;
|
||||
}
|
||||
R16_POWER_PLAN = power_plan;
|
||||
R8_HFCK_PWR_CTRL |= RB_CLK_RC16M_PON; //睡眠需要打开内部HSI之后睡
|
||||
R8_FLASH_CFG = 0X57;
|
||||
R8_FLASH_SCK = R8_FLASH_SCK & (~(1<<4));
|
||||
R16_CLK_SYS_CFG = CLK_SOURCE_HSE_4MHz;
|
||||
sys_safe_access_disable();
|
||||
if((R16_CLK_SYS_CFG & RB_CLK_SYS_MOD) == 0x40)
|
||||
}
|
||||
else//使用内部16M
|
||||
{
|
||||
sys_safe_access_enable();
|
||||
R16_CLK_SYS_CFG = (R16_CLK_SYS_CFG&(~RB_CLK_PLL_DIV))|24;
|
||||
R8_FLASH_CFG = 0X57;
|
||||
R8_FLASH_SCK = R8_FLASH_SCK & (~(1<<4));
|
||||
R16_CLK_SYS_CFG = CLK_SOURCE_HSI_4MHz;
|
||||
sys_safe_access_disable();
|
||||
}
|
||||
// sys_safe_access_enable();
|
||||
|
@ -374,7 +422,18 @@ void LowPower_Sleep(uint16_t rm)
|
|||
__nop();
|
||||
__nop();
|
||||
|
||||
if((!(clk_sys_cfg & RB_OSC32M_SEL)) && (clk_sys_cfg & 0x100)) //使用内部16M
|
||||
{
|
||||
i = 40;
|
||||
do
|
||||
{
|
||||
__nop();
|
||||
}while(--i);
|
||||
}
|
||||
|
||||
sys_safe_access_enable();
|
||||
R8_FLASH_CFG = flash_cfg;
|
||||
R8_FLASH_SCK = flash_sck;
|
||||
R16_CLK_SYS_CFG = clk_sys_cfg;
|
||||
R8_HFCK_PWR_CTRL = hfck_pwr_ctrl;
|
||||
sys_safe_access_disable();
|
||||
|
@ -382,14 +441,10 @@ void LowPower_Sleep(uint16_t rm)
|
|||
R16_POWER_PLAN &= ~RB_PWR_PLAN_EN;
|
||||
sys_safe_access_disable();
|
||||
|
||||
sys_safe_access_enable();
|
||||
R16_POWER_PLAN &= ~RB_XT_PRE_EN;
|
||||
sys_safe_access_disable();
|
||||
|
||||
// sys_safe_access_enable();
|
||||
// R8_PLL_CONFIG &= ~(1 << 5);
|
||||
// sys_safe_access_disable();
|
||||
DelayUs(40);
|
||||
// DelayUs(40);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
|
@ -409,20 +464,18 @@ void LowPower_Sleep(uint16_t rm)
|
|||
__HIGH_CODE
|
||||
void LowPower_Shutdown(uint16_t rm)
|
||||
{
|
||||
uint8_t x32Kpw, x32Mpw;
|
||||
uint8_t x32Kpw;
|
||||
|
||||
FLASH_ROM_SW_RESET();
|
||||
x32Kpw = R8_XT32K_TUNE;
|
||||
x32Mpw = R8_XT32M_TUNE;
|
||||
x32Mpw = (x32Mpw & 0xfc) | 0x03; // 150%额定电流
|
||||
x32Kpw = (x32Kpw & 0xfc) | 0x01; // LSE驱动电流降低到额定电流
|
||||
|
||||
SetSysClock(CLK_SOURCE_HSI_PLL_13MHz);
|
||||
sys_safe_access_enable();
|
||||
R8_BAT_DET_CTRL = 0; // 关闭电压监控
|
||||
sys_safe_access_disable();
|
||||
sys_safe_access_enable();
|
||||
R8_XT32K_TUNE = x32Kpw;
|
||||
R8_XT32M_TUNE = x32Mpw;
|
||||
sys_safe_access_disable();
|
||||
|
||||
PFIC->SCTLR |= (1 << 2); //deep sleep
|
||||
|
|
|
@ -98,7 +98,8 @@ void SPI0_DataMode(ModeBitOrderTypeDef m)
|
|||
void SPI0_MasterSendByte(uint8_t d)
|
||||
{
|
||||
R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
|
||||
R8_SPI0_BUFFER = d;
|
||||
R16_SPI0_TOTAL_CNT = 1; // 设置要发送的数据长度
|
||||
R8_SPI0_FIFO = d;
|
||||
while(!(R8_SPI0_INT_FLAG & RB_SPI_FREE));
|
||||
}
|
||||
|
||||
|
@ -262,6 +263,7 @@ uint8_t SPI0_SlaveRecvByte(void)
|
|||
void SPI0_SlaveSendByte(uint8_t d)
|
||||
{
|
||||
R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
|
||||
R16_SPI0_TOTAL_CNT = 1;
|
||||
R8_SPI0_FIFO = d;
|
||||
while(R8_SPI0_FIFO_COUNT != 0); // 等待发送完成
|
||||
}
|
||||
|
|
|
@ -97,7 +97,8 @@ void SPI1_DataMode(ModeBitOrderTypeDef m)
|
|||
void SPI1_MasterSendByte(uint8_t d)
|
||||
{
|
||||
R8_SPI1_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
|
||||
R8_SPI1_BUFFER = d;
|
||||
R16_SPI1_TOTAL_CNT = 1; // 设置要发送的数据长度
|
||||
R8_SPI1_FIFO = d;
|
||||
while(!(R8_SPI1_INT_FLAG & RB_SPI_FREE));
|
||||
}
|
||||
|
||||
|
@ -112,7 +113,7 @@ void SPI1_MasterSendByte(uint8_t d)
|
|||
*/
|
||||
uint8_t SPI1_MasterRecvByte(void)
|
||||
{
|
||||
R8_SPI1_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
|
||||
R8_SPI1_CTRL_MOD |= RB_SPI_FIFO_DIR; // 设置数据方向为输入
|
||||
R8_SPI1_BUFFER = 0xFF; // 启动传输
|
||||
while(!(R8_SPI1_INT_FLAG & RB_SPI_FREE));
|
||||
return (R8_SPI1_BUFFER);
|
||||
|
|
|
@ -83,8 +83,8 @@ void SetSysClock(SYS_CLKTypeDef sc)
|
|||
}
|
||||
else
|
||||
{
|
||||
R8_FLASH_SCK = R8_FLASH_SCK|(1<<4);
|
||||
R8_FLASH_CFG = 0X03;
|
||||
R8_FLASH_SCK = R8_FLASH_SCK & (~(1<<4));
|
||||
R8_FLASH_CFG = 0X07;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -136,12 +136,14 @@ void highcode_init(void)
|
|||
R32_SAFE_MODE_CTRL |= RB_XROM_312M_SEL;
|
||||
R8_SAFE_MODE_CTRL &= ~RB_SAFE_AUTO_EN;
|
||||
sys_safe_access_enable();
|
||||
R32_MISC_CTRL |= 5; //
|
||||
R32_MISC_CTRL |= 5|(3<<25); //
|
||||
R8_PLL_CONFIG &= ~(1 << 5); //
|
||||
R8_HFCK_PWR_CTRL |= RB_CLK_RC16M_PON | RB_CLK_PLL_PON;
|
||||
R16_CLK_SYS_CFG = CLK_SOURCE_HSI_PLL_62_4MHz;
|
||||
R8_FLASH_SCK = R8_FLASH_SCK & (~(1<<4));
|
||||
R8_FLASH_CFG = 0X02;
|
||||
R8_XT32M_TUNE = (R8_XT32M_TUNE&(~0x03))|0x01;
|
||||
R8_CK32K_CONFIG |= RB_CLK_INT32K_PON;
|
||||
R8_SAFE_MODE_CTRL |= RB_SAFE_AUTO_EN;
|
||||
sys_safe_access_disable();
|
||||
}
|
||||
|
@ -213,6 +215,8 @@ void MachineMode_Call(MachineMode_Call_func func)
|
|||
|
||||
PFIC_DisableIRQ(SWI_IRQn);
|
||||
|
||||
_vector_base[SWI_IRQn] = sw_irqtable;
|
||||
|
||||
// if(i != 4)
|
||||
// {
|
||||
// /* »Ö¸´Ô±¾µÄSWÃâ±íÖÐ¶Ï */
|
||||
|
@ -335,6 +339,7 @@ void SYS_ResetExecute(void)
|
|||
*
|
||||
* @return none
|
||||
*/
|
||||
__HIGH_CODE
|
||||
void SYS_DisableAllIrq(uint32_t *pirqv)
|
||||
{
|
||||
*pirqv = (PFIC->ISR[0] >> 8) | (PFIC->ISR[1] << 24);
|
||||
|
@ -351,6 +356,7 @@ void SYS_DisableAllIrq(uint32_t *pirqv)
|
|||
*
|
||||
* @return none
|
||||
*/
|
||||
__HIGH_CODE
|
||||
void SYS_RecoverIrq(uint32_t irq_status)
|
||||
{
|
||||
PFIC->IENR[0] = (irq_status << 8);
|
||||
|
@ -568,8 +574,6 @@ int _write(int fd, char *buf, int size)
|
|||
|
||||
#endif
|
||||
|
||||
// https://www.cnblogs.com/debugdabiaoge/p/18543792
|
||||
|
||||
/*********************************************************************
|
||||
* @fn _sbrk
|
||||
*
|
||||
|
|
|
@ -285,7 +285,7 @@ extern "C" {
|
|||
//( (( RB_CLK_SYS_MOD[0] ? Fpll_div2 : (RB_OSC32M_SEL ? Fck32m : Fck16m) ) / RB_CLK_PLL_DIV
|
||||
|
||||
// default: Fsys = Fck16m/ RB_CLK_PLL_DIV = 16MHz / 3 = 5.33MHz
|
||||
// range: 32KHz, 1MHz~32MHz, 9.75MHz~78MHz
|
||||
// range: 32KHz, 1MHz~32MHz, 9.75MHz~78MHz
|
||||
|
||||
/* System: sleep control register */
|
||||
#define R32_SLEEP_CONTROL (*((PUINT32V)0x4000100C)) // RWA, sleep control, SAM
|
||||
|
@ -392,7 +392,7 @@ extern "C" {
|
|||
#define RB_PWR_LDO_EN 0x0100 // RWA, LDO enable
|
||||
#define RB_PWR_DCDC_EN 0x0200 // RWA, DC/DC converter enable: 0=DC/DC disable and bypass, 1=DC/DC enable
|
||||
#define RB_PWR_DCDC_PRE 0x0400 // RWA, DC/DC converter pre-enable
|
||||
#define RB_XT_PRE_CFG 0x1800 // RWA, extern 32MHz HSE early wake up time configuration
|
||||
//#define RB_XT_PRE_CFG 0x1800 // RWA, extern 32MHz HSE early wake up time configuration
|
||||
#define RB_PWR_MUST_0 0x2000 // RWA, must write 0
|
||||
#define RB_XT_PRE_EN 0x4000 // RWA, extern 32MHz HSE early wake up enable, must be used with LSI/LSE
|
||||
#define RB_PWR_PLAN_EN 0x8000 // RWA/WZ, power plan enable, auto clear after sleep executed
|
||||
|
@ -486,7 +486,7 @@ extern "C" {
|
|||
/* System: ADC and Touch-key register */
|
||||
#define R32_ADC_CTRL (*((PUINT32V)0x40001058)) // RW, ADC control
|
||||
#define R8_ADC_CHANNEL (*((PUINT8V)0x40001058)) // RW, ADC input channel selection
|
||||
#define RB_ADC_CH_INX 0x1F // RW, ADC input channel index, 00~0D=A0~A13, 0E=VBAT, 0F=TS, 10=NFC energy check channel
|
||||
#define RB_ADC_CH_INX 0x1F // RW, ADC input channel index, 00~0D=A0~13, 0E=VBAT, 0F=TS, 10=NFC energy check channel
|
||||
#define R8_ADC_CFG (*((PUINT8V)0x40001059)) // RW, ADC configure
|
||||
#define RB_ADC_POWER_ON 0x01 // RW, ADC power control: 0=power down, 1=power on
|
||||
#define RB_ADC_BUF_EN 0x02 // RW, ADC input buffer enable
|
||||
|
|
|
@ -26,10 +26,10 @@ extern "C" {
|
|||
*/
|
||||
void FLASH_ROM_READ(uint32_t StartAddr, void *Buffer, uint32_t len);
|
||||
|
||||
UINT8 UserOptionByteConfig(FunctionalState RESET_EN, FunctionalState BOOT_PIN, FunctionalState UART_NO_KEY_EN,
|
||||
uint8_t UserOptionByteConfig(FunctionalState RESET_EN, FunctionalState BOOT_PIN, FunctionalState UART_NO_KEY_EN,
|
||||
uint32_t FLASHProt_Size);
|
||||
|
||||
UINT8 UserOptionByteClose_SWD(void);
|
||||
uint8_t UserOptionByteClose_SWD(void);
|
||||
|
||||
void UserOptionByte_Active(void);
|
||||
|
||||
|
|
|
@ -145,8 +145,8 @@ typedef enum
|
|||
#define I2C_EVENT_SLAVE_BYTE_TRANSMITTING ((uint32_t)0x00060080) /* TRA, BUSY and TXE flags */
|
||||
#define I2C_EVENT_SLAVE_ACK_FAILURE ((uint32_t)0x00000400) /* AF flag */
|
||||
|
||||
void I2C_Init(I2C_ModeTypeDef I2C_Mode, UINT32 I2C_ClockSpeed, I2C_DutyTypeDef I2C_DutyCycle,
|
||||
I2C_AckTypeDef I2C_Ack, I2C_AckAddrTypeDef I2C_AckAddr, UINT16 I2C_OwnAddress1);
|
||||
void I2C_Init(I2C_ModeTypeDef I2C_Mode, uint32_t I2C_ClockSpeed, I2C_DutyTypeDef I2C_DutyCycle,
|
||||
I2C_AckTypeDef I2C_Ack, I2C_AckAddrTypeDef I2C_AckAddr, uint16_t I2C_OwnAddress1);
|
||||
void I2C_Cmd(FunctionalState NewState);
|
||||
void I2C_GenerateSTART(FunctionalState NewState);
|
||||
void I2C_GenerateSTOP(FunctionalState NewState);
|
||||
|
|
|
@ -74,23 +74,23 @@ void LCD_Init(LCDDutyTypeDef duty, LCDBiasTypeDef bias);
|
|||
// 输入值参考 LCDBiasTypeDef
|
||||
#define LCD_BiasCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_BIAS) | (d<<2)) /* 配置LCD的 bias选择 */
|
||||
|
||||
#define LCD_WriteData0( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffffff00) | ((UINT32)d)) /* 填充LCD0驱动数值 */
|
||||
#define LCD_WriteData1( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffff00ff) | ((UINT32)d<<8)) /* 填充LCD1驱动数值 */
|
||||
#define LCD_WriteData2( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xff00ffff) | ((UINT32)d<<16)) /* 填充LCD2驱动数值 */
|
||||
#define LCD_WriteData3( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0x00ffffff) | ((UINT32)d<<24)) /* 填充LCD3驱动数值 */
|
||||
#define LCD_WriteData0( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffffff00) | ((uint32_t)d)) /* 填充LCD0驱动数值 */
|
||||
#define LCD_WriteData1( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffff00ff) | ((uint32_t)d<<8)) /* 填充LCD1驱动数值 */
|
||||
#define LCD_WriteData2( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xff00ffff) | ((uint32_t)d<<16)) /* 填充LCD2驱动数值 */
|
||||
#define LCD_WriteData3( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0x00ffffff) | ((uint32_t)d<<24)) /* 填充LCD3驱动数值 */
|
||||
|
||||
#define LCD_WriteData4( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffffff00) | ((UINT32)d)) /* 填充LCD4驱动数值 */
|
||||
#define LCD_WriteData5( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffff00ff) | ((UINT32)d<<8)) /* 填充LCD5驱动数值 */
|
||||
#define LCD_WriteData6( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xff00ffff) | ((UINT32)d<<16)) /* 填充LCD6驱动数值 */
|
||||
#define LCD_WriteData7( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0x00ffffff) | ((UINT32)d<<24)) /* 填充LCD7驱动数值 */
|
||||
#define LCD_WriteData4( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffffff00) | ((uint32_t)d)) /* 填充LCD4驱动数值 */
|
||||
#define LCD_WriteData5( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffff00ff) | ((uint32_t)d<<8)) /* 填充LCD5驱动数值 */
|
||||
#define LCD_WriteData6( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xff00ffff) | ((uint32_t)d<<16)) /* 填充LCD6驱动数值 */
|
||||
#define LCD_WriteData7( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0x00ffffff) | ((uint32_t)d<<24)) /* 填充LCD7驱动数值 */
|
||||
|
||||
#define LCD_WriteData8( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffffff00) | ((UINT32)d)) /* 填充LCD8驱动数值 */
|
||||
#define LCD_WriteData9( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffff00ff) | ((UINT32)d<<8)) /* 填充LCD9驱动数值 */
|
||||
#define LCD_WriteData10( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xff00ffff) | ((UINT32)d<<16)) /* 填充LCD10驱动数值 */
|
||||
#define LCD_WriteData11( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0x00ffffff) | ((UINT32)d<<24)) /* 填充LCD11驱动数值 */
|
||||
#define LCD_WriteData8( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffffff00) | ((uint32_t)d)) /* 填充LCD8驱动数值 */
|
||||
#define LCD_WriteData9( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffff00ff) | ((uint32_t)d<<8)) /* 填充LCD9驱动数值 */
|
||||
#define LCD_WriteData10( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xff00ffff) | ((uint32_t)d<<16)) /* 填充LCD10驱动数值 */
|
||||
#define LCD_WriteData11( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0x00ffffff) | ((uint32_t)d<<24)) /* 填充LCD11驱动数值 */
|
||||
|
||||
#define LCD_WriteData12( d ) (R32_LCD_RAM3 = (R32_LCD_RAM3 & 0xffffff00) | ((UINT32)d)) /* 填充LCD12驱动数值 */
|
||||
#define LCD_WriteData13( d ) (R32_LCD_RAM3 = (R32_LCD_RAM3 & 0xffff00ff) | ((UINT32)d<<8)) /* 填充LCD13驱动数值 */
|
||||
#define LCD_WriteData12( d ) (R32_LCD_RAM3 = (R32_LCD_RAM3 & 0xffffff00) | ((uint32_t)d)) /* 填充LCD12驱动数值 */
|
||||
#define LCD_WriteData13( d ) (R32_LCD_RAM3 = (R32_LCD_RAM3 & 0xffff00ff) | ((uint32_t)d<<8)) /* 填充LCD13驱动数值 */
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ void SPI1_MasterDefInit(void);
|
|||
*
|
||||
* @param c - 时钟分频系数
|
||||
*/
|
||||
void SPI1_CLKCfg(UINT8 c);
|
||||
void SPI1_CLKCfg(uint8_t c);
|
||||
|
||||
/**
|
||||
* @brief 设置数据流模式
|
||||
|
@ -136,14 +136,14 @@ void SPI1_DataMode(ModeBitOrderTypeDef m);
|
|||
*
|
||||
* @param d - 发送字节
|
||||
*/
|
||||
void SPI1_MasterSendByte(UINT8 d);
|
||||
void SPI1_MasterSendByte(uint8_t d);
|
||||
|
||||
/**
|
||||
* @brief 接收单字节 (buffer)
|
||||
*
|
||||
* @param none
|
||||
*/
|
||||
UINT8 SPI1_MasterRecvByte(void);
|
||||
uint8_t SPI1_MasterRecvByte(void);
|
||||
|
||||
/**
|
||||
* @brief 使用FIFO连续发送多字节
|
||||
|
@ -151,7 +151,7 @@ UINT8 SPI1_MasterRecvByte(void);
|
|||
* @param pbuf - 待发送的数据内容首地址
|
||||
* @param len - 请求发送的数据长度,最大4095
|
||||
*/
|
||||
void SPI1_MasterTrans(UINT8 *pbuf, UINT16 len);
|
||||
void SPI1_MasterTrans(uint8_t *pbuf, uint16_t len);
|
||||
|
||||
/**
|
||||
* @brief 使用FIFO连续接收多字节
|
||||
|
@ -159,7 +159,7 @@ void SPI1_MasterTrans(UINT8 *pbuf, UINT16 len);
|
|||
* @param pbuf - 待接收的数据首地址
|
||||
* @param len - 待接收的数据长度,最大4095
|
||||
*/
|
||||
void SPI1_MasterRecv(UINT8 *pbuf, UINT16 len);
|
||||
void SPI1_MasterRecv(uint8_t *pbuf, uint16_t len);
|
||||
|
||||
/**
|
||||
* @brief 设备模式默认初始化,建议设置MISO的GPIO对应为输入模式
|
||||
|
|
|
@ -70,13 +70,13 @@ typedef struct
|
|||
|
||||
typedef struct
|
||||
{
|
||||
UINT8 DeviceStatus; // 设备状态,0-无设备,1-有设备但尚未初始化,2-有设备但初始化枚举失败,3-有设备且初始化枚举成功
|
||||
UINT8 DeviceAddress; // 设备被分配的USB地址
|
||||
UINT8 DeviceSpeed; // 0为低速,非0为全速
|
||||
UINT8 DeviceType; // 设备类型
|
||||
UINT16 DeviceVID;
|
||||
UINT16 DevicePID;
|
||||
UINT8 GpVar[4]; // 通用变量
|
||||
uint8_t DeviceStatus; // 设备状态,0-无设备,1-有设备但尚未初始化,2-有设备但初始化枚举失败,3-有设备且初始化枚举成功
|
||||
uint8_t DeviceAddress; // 设备被分配的USB地址
|
||||
uint8_t DeviceSpeed; // 0为低速,非0为全速
|
||||
uint8_t DeviceType; // 设备类型
|
||||
uint16_t DeviceVID;
|
||||
uint16_t DevicePID;
|
||||
uint8_t GpVar[4]; // 通用变量
|
||||
} _DevOnHubPort; // 假定:不超过1个外部HUB,每个外部HUB不超过HUB_MAX_PORTS个端口(多了不管)
|
||||
|
||||
extern _RootHubDev ThisUsbDev;
|
||||
|
|
Loading…
Reference in New Issue