更新evt v1.3

This commit is contained in:
stark1898y 2025-03-27 10:22:43 +08:00
parent 513fbdfdbf
commit afa04bd401
27 changed files with 23859 additions and 23749 deletions

View File

@ -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();

View File

@ -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);

View File

@ -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 */

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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;
/**

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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) + \

View File

@ -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();

View File

@ -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;

View File

@ -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

View File

@ -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); // 等待发送完成
}

View File

@ -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);

View File

@ -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
*

View File

@ -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.75MHz78MHz
// 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=A0A13, 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

View File

@ -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);

View File

@ -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);

View File

@ -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驱动数值 */

View File

@ -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对应为输入模式

View File

@ -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;