chore: 源码编码GB2312统一转换为UTF-8

18个含有中文注释的.c/.h文件从GB2312转为UTF-8(无BOM)
This commit is contained in:
2026-07-20 14:27:38 +08:00
parent aef9d4effe
commit 8ded5ca0dc
18 changed files with 208 additions and 208 deletions
+1 -1
View File
@@ -218,7 +218,7 @@ int app_update_entry(struct pt *pt)
update_init(send_bytes); update_init(send_bytes);
//²Á³ýAPP //擦除APP
if ((g_update.cfg.UpdateFlag == APP_UPDATE_FLAG) if ((g_update.cfg.UpdateFlag == APP_UPDATE_FLAG)
&& dev_boot_check_app() && dev_boot_check_app()
){ ){
+1 -1
View File
@@ -9,7 +9,7 @@
#include "hdl_clk.h" #include "hdl_clk.h"
/******************************************************************************* /*******************************************************************************
* ÖжϷþÎñº¯Êý * 中断服务函数
******************************************************************************/ ******************************************************************************/
void SysTick_Handler(void) void SysTick_Handler(void)
{ {
+18 -18
View File
@@ -1,5 +1,5 @@
/****************************************************************************** /******************************************************************************
* @brief 环形缓冲区管理(参考linux/kfifo) * @brief 环形缓冲区管理(参考linux/kfifo)
* *
* Copyright (c) 2016~2020, <morro_luo@163.com> * Copyright (c) 2016~2020, <morro_luo@163.com>
* *
@@ -7,7 +7,7 @@
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2016-05-30 Morro 初版完成 * 2016-05-30 Morro 初版完成
******************************************************************************/ ******************************************************************************/
#include "ringbuffer.h" #include "ringbuffer.h"
#include <string.h> #include <string.h>
@@ -16,10 +16,10 @@
#define min(a,b) ( (a) < (b) )? (a):(b) #define min(a,b) ( (a) < (b) )? (a):(b)
/* /*
*@brief 构造一个空环形缓冲区 *@brief 构造一个空环形缓冲区
*@param[in] r - 环形缓冲区管理器 *@param[in] r - 环形缓冲区管理器
*@param[in] buf - 数据缓冲区 *@param[in] buf - 数据缓冲区
*@param[in] len - buf长度(必须是2的N次幂) *@param[in] len - buf长度(必须是2的N次幂)
*@retval bool *@retval bool
*/ */
bool ring_buf_init(ring_buf_t *r,unsigned char *buf, unsigned int len) bool ring_buf_init(ring_buf_t *r,unsigned char *buf, unsigned int len)
@@ -31,8 +31,8 @@ bool ring_buf_init(ring_buf_t *r,unsigned char *buf, unsigned int len)
} }
/* /*
*@brief 清空环形缓冲区 *@brief 清空环形缓冲区
*@param[in] r - 待清空的环形缓冲区 *@param[in] r - 待清空的环形缓冲区
*@retval none *@retval none
*/ */
void ring_buf_clr(ring_buf_t *r) void ring_buf_clr(ring_buf_t *r)
@@ -41,8 +41,8 @@ void ring_buf_clr(ring_buf_t *r)
} }
/* /*
*@brief 获取环形缓冲区数据长度 *@brief 获取环形缓冲区数据长度
*@retval 环形缓冲区中有效字节数 *@retval 环形缓冲区中有效字节数
*/ */
int ring_buf_len(ring_buf_t *r) int ring_buf_len(ring_buf_t *r)
{ {
@@ -50,10 +50,10 @@ int ring_buf_len(ring_buf_t *r)
} }
/* /*
*@brief 将指定长度的数据放到环形缓冲区中 *@brief 将指定长度的数据放到环形缓冲区中
*@param[in] buf - 数据缓冲区 *@param[in] buf - 数据缓冲区
* len - 缓冲区长度 * len - 缓冲区长度
*@retval 实际放到中的数据 *@retval 实际放到中的数据
*/ */
int ring_buf_put(ring_buf_t *r,unsigned char *buf,unsigned int len) int ring_buf_put(ring_buf_t *r,unsigned char *buf,unsigned int len)
{ {
@@ -70,10 +70,10 @@ int ring_buf_put(ring_buf_t *r,unsigned char *buf,unsigned int len)
} }
/* /*
*@brief 从环形缓冲区中读取指定长度的数据 *@brief 从环形缓冲区中读取指定长度的数据
*@param[in] len - 读取长度 *@param[in] len - 读取长度
*@param[out] buf - 输出数据缓冲区 *@param[out] buf - 输出数据缓冲区
*@retval 实际读取长度 *@retval 实际读取长度
*/ */
int ring_buf_get(ring_buf_t *r,unsigned char *buf,unsigned int len) int ring_buf_get(ring_buf_t *r,unsigned char *buf,unsigned int len)
{ {
+7 -7
View File
@@ -1,5 +1,5 @@
/****************************************************************************** /******************************************************************************
* @brief 环形缓冲区管理(参考linux/kfifo) * @brief 环形缓冲区管理(参考linux/kfifo)
* *
* Copyright (c) 2016~2020, <morro_luo@163.com> * Copyright (c) 2016~2020, <morro_luo@163.com>
* *
@@ -7,7 +7,7 @@
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2016-05-30 Morro 初版完成 * 2016-05-30 Morro 初版完成
******************************************************************************/ ******************************************************************************/
#ifndef _RING_BUF_H_ #ifndef _RING_BUF_H_
@@ -19,12 +19,12 @@
extern "C" { extern "C" {
#endif #endif
/*环形缓冲区管理器*/ /*环形缓冲区管理器*/
typedef struct { typedef struct {
unsigned char *buf; /*环形缓冲区 */ unsigned char *buf; /*环形缓冲区 */
unsigned int size; /*环形缓冲区 */ unsigned int size; /*环形缓冲区 */
unsigned int front; /*头指针 */ unsigned int front; /*头指针 */
unsigned int rear; /*尾指针 */ unsigned int rear; /*尾指针 */
}ring_buf_t; }ring_buf_t;
bool ring_buf_init(ring_buf_t *r,unsigned char *buf,unsigned int size); bool ring_buf_init(ring_buf_t *r,unsigned char *buf,unsigned int size);
+4 -4
View File
@@ -5,7 +5,7 @@
#define CRC16_BASE 0xA001 #define CRC16_BASE 0xA001
//帧头结构体 //帧头结构体
typedef struct { typedef struct {
uint8_t Header; uint8_t Header;
uint8_t SlvAddr; uint8_t SlvAddr;
@@ -13,20 +13,20 @@ typedef struct {
uint8_t PayloadLen; uint8_t PayloadLen;
}update_protocol_hd_t; }update_protocol_hd_t;
//主机下发升级请求载荷结构体 //主机下发升级请求载荷结构体
typedef struct { typedef struct {
uint16_t PackageNum; uint16_t PackageNum;
uint32_t AppSize; uint32_t AppSize;
uint32_t AppCrc32; uint32_t AppCrc32;
}__attribute__ ((packed))update_protocol_req_t; }__attribute__ ((packed))update_protocol_req_t;
//从机请求下发结构体 //从机请求下发结构体
typedef struct { typedef struct {
uint16_t PackageIndex; uint16_t PackageIndex;
uint32_t PackageNum; uint32_t PackageNum;
}__attribute__ ((packed))update_protocol_get_t; }__attribute__ ((packed))update_protocol_get_t;
//主机应答下发数据结构体 //主机应答下发数据结构体
typedef struct { typedef struct {
uint16_t PackageIndex; uint16_t PackageIndex;
uint16_t PackageNum; uint16_t PackageNum;
+29 -29
View File
@@ -1,11 +1,11 @@
#include "hdl_clk.h" #include "hdl_clk.h"
/******************************************************************************************************** /********************************************************************************************************
* @函数名 hdl_xtal_init * @鍑芥暟鍚? hdl_xtal_init
* @描述 外部晶振初始化 * @鎻忚堪 澶栭儴鏅舵尟鍒濆鍖?
* @参数 * @鍙傛暟 鏃?
* @返回值 无 * @杩斿洖鍊? 鏃?
* @注意 * @娉ㄦ剰 鏃?
********************************************************************************************************/ ********************************************************************************************************/
#if USING_XTAL #if USING_XTAL
@@ -13,11 +13,11 @@ static void hdl_xtal_init(void)
{ {
stc_clock_xtal_init_t stcXtalInit; stc_clock_xtal_init_t stcXtalInit;
/* XTAL 引脚配置 */ /* XTAL 寮曡剼閰嶇疆 */
GPIO_AnalogCmd(GPIO_PORT_H, GPIO_PIN_00 | GPIO_PIN_01, ENABLE); GPIO_AnalogCmd(GPIO_PORT_H, GPIO_PIN_00 | GPIO_PIN_01, ENABLE);
(void)CLK_XtalStructInit(&stcXtalInit); (void)CLK_XtalStructInit(&stcXtalInit);
/* 配置XTAL和启用XTAL */ /* 閰嶇疆XTAL鍜屽惎鐢╔TAL */
stcXtalInit.u8State = CLK_XTAL_ON; stcXtalInit.u8State = CLK_XTAL_ON;
stcXtalInit.u8Mode = CLK_XTAL_MD_OSC; stcXtalInit.u8Mode = CLK_XTAL_MD_OSC;
stcXtalInit.u8Drv = CLK_XTAL_DRV_ULOW; stcXtalInit.u8Drv = CLK_XTAL_DRV_ULOW;
@@ -28,11 +28,11 @@ static void hdl_xtal_init(void)
/******************************************************************************************************** /********************************************************************************************************
* @函数名 hdl_pll_init * @鍑芥暟鍚? hdl_pll_init
* @描述 锁相环倍频初始化 * @鎻忚堪 閿佺浉鐜€嶉鍒濆鍖?
* @参数 * @鍙傛暟 鏃?
* @返回值 无 * @杩斿洖鍊? 鏃?
* @注意 * @娉ㄦ剰 鏃?
********************************************************************************************************/ ********************************************************************************************************/
static void hdl_pll_init(void) static void hdl_pll_init(void)
{ {
@@ -40,7 +40,7 @@ static void hdl_pll_init(void)
(void)CLK_PLLStructInit(&stcMPLLInit); (void)CLK_PLLStructInit(&stcMPLLInit);
/* MPLL 配置 */ /* MPLL 閰嶇疆 */
/* 16MHz/M*N = 16/2*50/2 = 200MHz */ /* 16MHz/M*N = 16/2*50/2 = 200MHz */
stcMPLLInit.PLLCFGR = 0UL; stcMPLLInit.PLLCFGR = 0UL;
stcMPLLInit.PLLCFGR_f.PLLM = (2UL - 1UL); stcMPLLInit.PLLCFGR_f.PLLM = (2UL - 1UL);
@@ -55,33 +55,33 @@ static void hdl_pll_init(void)
/******************************************************************************************************** /********************************************************************************************************
* @函数名 hdl_clk_init * @鍑芥暟鍚? hdl_clk_init
* @描述 时钟初始化 * @鎻忚堪 鏃堕挓鍒濆鍖?
* @参数 * @鍙傛暟 鏃?
* @返回值 无 * @杩斿洖鍊? 鏃?
* @注意 * @娉ㄦ剰 鏃?
********************************************************************************************************/ ********************************************************************************************************/
void hdl_clk_init(void) void hdl_clk_init(void)
{ {
/* 解除写保护 */ /* 瑙i櫎鍐欎繚鎶?*/
LL_PERIPH_WE(LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_GPIO | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM); LL_PERIPH_WE(LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_GPIO | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM);
/* 设置时钟分频 */ /* 璁剧疆鏃堕挓鍒嗛 */
CLK_SetClockDiv(CLK_BUS_CLK_ALL, (CLK_HCLK_DIV1 | CLK_EXCLK_DIV2 | CLK_PCLK0_DIV1 | CLK_PCLK1_DIV2 | \ CLK_SetClockDiv(CLK_BUS_CLK_ALL, (CLK_HCLK_DIV1 | CLK_EXCLK_DIV2 | CLK_PCLK0_DIV1 | CLK_PCLK1_DIV2 | \
CLK_PCLK2_DIV4 | CLK_PCLK3_DIV4 | CLK_PCLK4_DIV2)); CLK_PCLK2_DIV4 | CLK_PCLK3_DIV4 | CLK_PCLK4_DIV2));
/* SRAM初始化包括读/写等待周期设置 */ /* SRAM鍒濆鍖栧寘鎷/鍐欑瓑寰呭懆鏈熻缃?*/
SRAM_SetWaitCycle(SRAM_SRAM_ALL, SRAM_WAIT_CYCLE1, SRAM_WAIT_CYCLE1); SRAM_SetWaitCycle(SRAM_SRAM_ALL, SRAM_WAIT_CYCLE1, SRAM_WAIT_CYCLE1);
SRAM_SetWaitCycle(SRAM_SRAMH, SRAM_WAIT_CYCLE0, SRAM_WAIT_CYCLE0); SRAM_SetWaitCycle(SRAM_SRAMH, SRAM_WAIT_CYCLE0, SRAM_WAIT_CYCLE0);
/* 闪存读取等待周期设置 */ /* 闂瓨璇诲彇绛夊緟鍛ㄦ湡璁剧疆 */
EFM_SetWaitCycle(EFM_WAIT_CYCLE5); EFM_SetWaitCycle(EFM_WAIT_CYCLE5);
/* XTAL 初始化 */ /* XTAL 鍒濆鍖?*/
// hdl_xtal_init(); // hdl_xtal_init();
/* XTAL32 初始化 */ /* XTAL32 鍒濆鍖?*/
/* MPLL 初始化 */ /* MPLL 鍒濆鍖?*/
hdl_pll_init(); hdl_pll_init();
/* enable LRC */ /* enable LRC */
@@ -90,7 +90,7 @@ void hdl_clk_init(void)
/* 3 cycles for 126MHz ~ 200MHz */ /* 3 cycles for 126MHz ~ 200MHz */
GPIO_SetReadWaitCycle(GPIO_RD_WAIT3); GPIO_SetReadWaitCycle(GPIO_RD_WAIT3);
/* 切换驱动能力 */ /* 鍒囨崲椹卞姩鑳藉姏 */
PWC_HighSpeedToHighPerformance(); PWC_HighSpeedToHighPerformance();
EFM_DataCacheResetCmd(ENABLE); EFM_DataCacheResetCmd(ENABLE);
@@ -99,13 +99,13 @@ void hdl_clk_init(void)
/* Enable cache */ /* Enable cache */
EFM_CacheCmd(ENABLE); EFM_CacheCmd(ENABLE);
/* 使能写保护 */ /* 浣胯兘鍐欎繚鎶?*/
LL_PERIPH_WP(LL_PERIPH_EFM | LL_PERIPH_GPIO | LL_PERIPH_SRAM); LL_PERIPH_WP(LL_PERIPH_EFM | LL_PERIPH_GPIO | LL_PERIPH_SRAM);
/* 设置系统时钟源 */ /* 璁剧疆绯荤粺鏃堕挓婧?*/
CLK_SetSysClockSrc(CLK_SYSCLK_SRC_PLL); CLK_SetSysClockSrc(CLK_SYSCLK_SRC_PLL);
/* 使能systick */ /* 浣胯兘systick */
(void)SysTick_Init(1000U); (void)SysTick_Init(1000U);
} }
+11 -11
View File
@@ -127,7 +127,7 @@ void hdl_cs5552_init(void)
SET_CS5552_CS(); SET_CS5552_CS();
/* 配置CS5552 */ /* 配置CS5552 */
CLR_CS5552_CS(); CLR_CS5552_CS();
hdl_cs5552_write_read_byte(0x00); hdl_cs5552_write_read_byte(0x00);
hdl_cs5552_write_read_byte(0xA5); hdl_cs5552_write_read_byte(0xA5);
@@ -143,32 +143,32 @@ void hdl_cs5552_init(void)
hdl_cs5552_reg_write(GAIN_CH0_W, 0x02, 0x00, 0x00, 0x00); //GAIN_CH0 hdl_cs5552_reg_write(GAIN_CH0_W, 0x02, 0x00, 0x00, 0x00); //GAIN_CH0
hdl_cs5552_reg_write(OS_CH1_W, 0x00, 0x00, 0x00, 0x00); //OS_CH1 hdl_cs5552_reg_write(OS_CH1_W, 0x00, 0x00, 0x00, 0x00); //OS_CH1
hdl_cs5552_reg_write(GAIN_CH1_W, 0x02, 0x00, 0x00, 0x00); //GAIN_CH1 hdl_cs5552_reg_write(GAIN_CH1_W, 0x02, 0x00, 0x00, 0x00); //GAIN_CH1
hdl_cs5552_reg_write(CONV_CONF0_W, 0x30, 0x80, 0x00, 0x80); //CONV_CONF0 滤波-256CLK 速率-200Hz PGA-128 hdl_cs5552_reg_write(CONV_CONF0_W, 0x30, 0x80, 0x00, 0x80); //CONV_CONF0 滤波-256CLK 速率-200Hz PGA-128
hdl_cs5552_reg_write(CONV_CONF1_W, 0x00, 0x00, 0x00, 0x00); //CONV_CONF1 hdl_cs5552_reg_write(CONV_CONF1_W, 0x00, 0x00, 0x00, 0x00); //CONV_CONF1
hdl_cs5552_reg_write(SYS_CONF0_W, 0x02, 0x01, 0x00, 0x00); //SYS_CONF0 hdl_cs5552_reg_write(SYS_CONF0_W, 0x02, 0x01, 0x00, 0x00); //SYS_CONF0
hdl_cs5552_reg_write(SYS_CONF1_W, 0x08, 0x11, 0x02, 0x10); //SYS_CONF1 内部时钟 内部基准源 hdl_cs5552_reg_write(SYS_CONF1_W, 0x08, 0x11, 0x02, 0x10); //SYS_CONF1 内部时钟 内部基准源
hdl_cs5552_reg_write(SYS_CONF2_W, 0x00, 0x52, 0x10, 0x00); //SYS_CONF2 hdl_cs5552_reg_write(SYS_CONF2_W, 0x00, 0x52, 0x10, 0x00); //SYS_CONF2
#ifdef HC32_DEBUG #ifdef HC32_DEBUG
/* 读取通道0设置 */ /* 读取通道0设置 */
data = hdl_cs5552_reg_read(OS_CH0_R); data = hdl_cs5552_reg_read(OS_CH0_R);
printf("OS_CH0 = %d\r\n", data); printf("OS_CH0 = %d\r\n", data);
data = hdl_cs5552_reg_read(GAIN_CH0_R); data = hdl_cs5552_reg_read(GAIN_CH0_R);
printf("GAIN_CH0 = %d\r\n", data); printf("GAIN_CH0 = %d\r\n", data);
/* 读取通道1设置 */ /* 读取通道1设置 */
data = hdl_cs5552_reg_read(OS_CH1_R); data = hdl_cs5552_reg_read(OS_CH1_R);
printf("OS_CH1 = %d\r\n", data); printf("OS_CH1 = %d\r\n", data);
data = hdl_cs5552_reg_read(GAIN_CH1_R); data = hdl_cs5552_reg_read(GAIN_CH1_R);
printf("GAIN_CH1 = %d\r\n", data); printf("GAIN_CH1 = %d\r\n", data);
/* 配置CONV */ /* 配置CONV */
data = hdl_cs5552_reg_read(CONV_CONF0_R); data = hdl_cs5552_reg_read(CONV_CONF0_R);
printf("CONV_CONF0 = %d\r\n", data); printf("CONV_CONF0 = %d\r\n", data);
data = hdl_cs5552_reg_read(CONV_CONF1_R); data = hdl_cs5552_reg_read(CONV_CONF1_R);
printf("CONV_CONF1 = %d\r\n", data); printf("CONV_CONF1 = %d\r\n", data);
/* 配置SYS */ /* 配置SYS */
data = hdl_cs5552_reg_read(SYS_CONF0_R); data = hdl_cs5552_reg_read(SYS_CONF0_R);
printf("SYS_CONF0 = %d\r\n", data); printf("SYS_CONF0 = %d\r\n", data);
data = hdl_cs5552_reg_read(SYS_CONF1_R); data = hdl_cs5552_reg_read(SYS_CONF1_R);
@@ -208,7 +208,7 @@ void hdl_cs5552_proc(void)
case CS5552_OFFSET_READ: case CS5552_OFFSET_READ:
if(RESET == GET_CS5552_DOUT()) if(RESET == GET_CS5552_DOUT())
{ {
ad_value = hdl_cs5552_reg_read(0xFF); //获取数据 ad_value = hdl_cs5552_reg_read(0xFF); //获取数据
if((ad_value & 0x1) == 0) if((ad_value & 0x1) == 0)
{ {
@@ -220,7 +220,7 @@ void hdl_cs5552_proc(void)
cs5552.offset_ch1[offset_cnt] = (ad_value & 0xFFFFFFFE) | 0x0; cs5552.offset_ch1[offset_cnt] = (ad_value & 0xFFFFFFFE) | 0x0;
} }
offset_cnt++; offset_cnt++;
cs5552.channel_sta = 1-cs5552.channel_sta; //切换通道 cs5552.channel_sta = 1-cs5552.channel_sta; //切换通道
cs5552.step = CS5552_OFFSET; cs5552.step = CS5552_OFFSET;
} }
@@ -238,7 +238,7 @@ void hdl_cs5552_proc(void)
if(RESET == GET_CS5552_DOUT()) if(RESET == GET_CS5552_DOUT())
{ {
ad_value = hdl_cs5552_reg_read(0xFF); //获取数据 ad_value = hdl_cs5552_reg_read(0xFF); //获取数据
if((ad_value & 0x1) == 0) if((ad_value & 0x1) == 0)
{ {
@@ -256,7 +256,7 @@ void hdl_cs5552_proc(void)
cs5552.buf[1] = ~(0x7FFFF - ((ad_value & 0xFFFFFFFE) >> 13)); cs5552.buf[1] = ~(0x7FFFF - ((ad_value & 0xFFFFFFFE) >> 13));
} }
cs5552.channel_sta = 1-cs5552.channel_sta; //切换通道 cs5552.channel_sta = 1-cs5552.channel_sta; //切换通道
cs5552.step = CS5552_START; cs5552.step = CS5552_START;
} }
+5 -5
View File
@@ -93,11 +93,11 @@ typedef enum
typedef struct typedef struct
{ {
en_cs5552_step step; //流程 en_cs5552_step step; //流程
en_cs5552_ch channel_sta; //当前转换通道 en_cs5552_ch channel_sta; //当前转换通道
int32_t buf[2]; //通道数据 int32_t buf[2]; //通道数据
uint32_t offset_ch0[OFFSET_CNT]; //通道0校准值 uint32_t offset_ch0[OFFSET_CNT]; //通道0校准值
uint32_t offset_ch1[OFFSET_CNT]; //通道1校准值 uint32_t offset_ch1[OFFSET_CNT]; //通道1校准值
}stc_cs5552_t; }stc_cs5552_t;
void hdl_cs5552_init(void); void hdl_cs5552_init(void);
+6 -6
View File
@@ -47,23 +47,23 @@ void hdl_encoder_init(void)
LL_PERIPH_WE(LL_PERIPH_GPIO); LL_PERIPH_WE(LL_PERIPH_GPIO);
/* 配置引脚 */ /* 配置引脚 */
(void)GPIO_StructInit(&stcGpioInit); (void)GPIO_StructInit(&stcGpioInit);
stcGpioInit.u16PullUp = PIN_PU_ON; //上拉输入 stcGpioInit.u16PullUp = PIN_PU_ON; //上拉输入
stcGpioInit.u16ExtInt = PIN_EXTINT_ON; //外部中断 stcGpioInit.u16ExtInt = PIN_EXTINT_ON; //外部中断
(void)GPIO_Init(ENCODER_SW_PORT, ENCODER_SW_PIN, &stcGpioInit); (void)GPIO_Init(ENCODER_SW_PORT, ENCODER_SW_PIN, &stcGpioInit);
(void)GPIO_Init(ENCODER_A_PORT, ENCODER_A_PIN, &stcGpioInit); (void)GPIO_Init(ENCODER_A_PORT, ENCODER_A_PIN, &stcGpioInit);
(void)GPIO_Init(ENCODER_B_PORT, ENCODER_B_PIN, &stcGpioInit); (void)GPIO_Init(ENCODER_B_PORT, ENCODER_B_PIN, &stcGpioInit);
/* 配置中断 */ /* 配置中断 */
(void)EXTINT_StructInit(&stcExtIntInit); (void)EXTINT_StructInit(&stcExtIntInit);
stcExtIntInit.u32Filter = EXTINT_FILTER_ON; stcExtIntInit.u32Filter = EXTINT_FILTER_ON;
stcExtIntInit.u32FilterClock = EXTINT_FCLK_DIV8; stcExtIntInit.u32FilterClock = EXTINT_FCLK_DIV8;
stcExtIntInit.u32Edge = EXTINT_TRIG_BOTH; //双边沿中断 stcExtIntInit.u32Edge = EXTINT_TRIG_BOTH; //双边沿中断
(void)EXTINT_Init(ENCODER_A_EX_CH, &stcExtIntInit); (void)EXTINT_Init(ENCODER_A_EX_CH, &stcExtIntInit);
(void)EXTINT_Init(ENCODER_B_EX_CH, &stcExtIntInit); (void)EXTINT_Init(ENCODER_B_EX_CH, &stcExtIntInit);
/* 配置中断源 */ /* 配置中断源 */
stcIrqSignConfig.enIntSrc = ENCODER_A_INT_SRC; stcIrqSignConfig.enIntSrc = ENCODER_A_INT_SRC;
stcIrqSignConfig.enIRQn = ENCODER_A_INT_IRQn; stcIrqSignConfig.enIRQn = ENCODER_A_INT_IRQn;
stcIrqSignConfig.pfnCallback = &hdl_encoder_a_callback; stcIrqSignConfig.pfnCallback = &hdl_encoder_a_callback;
+1 -1
View File
@@ -58,7 +58,7 @@ int32_t hdl_flash_unlock(void)
; ;
} }
//½âËøEFM //解锁EFM
EFM_FWMC_Cmd(ENABLE); EFM_FWMC_Cmd(ENABLE);
EFM_CacheCmd(ENABLE); EFM_CacheCmd(ENABLE);
+1 -1
View File
@@ -53,7 +53,7 @@ extern "C"
/* Vector table */ /* Vector table */
#define VECT_TAB_STEP (0x000UL) #define VECT_TAB_STEP (0x000UL)
/* flash rom map ´æ´¢·ÖÇø*/ /* flash rom map 存储分区*/
//boot 16k //boot 16k
#define FLASH_BOOT_BASE (FLASH_BASE) #define FLASH_BOOT_BASE (FLASH_BASE)
#define FLASH_BOOT_SIZE (4*FLASH_SECTOR_SIZE) #define FLASH_BOOT_SIZE (4*FLASH_SECTOR_SIZE)
+39 -39
View File
@@ -39,9 +39,9 @@ void hdl_lcd_timer_config(void)
/* TIMER0 configuration */ /* TIMER0 configuration */
(void)TMR0_StructInit(&stcTmr0Init); (void)TMR0_StructInit(&stcTmr0Init);
stcTmr0Init.u32ClockSrc = TMR0_CLK_SRC_INTERN_CLK; //内部时钟 stcTmr0Init.u32ClockSrc = TMR0_CLK_SRC_INTERN_CLK; //内部时钟
stcTmr0Init.u32ClockDiv = TMR0_CLK_DIV64; //2分频 stcTmr0Init.u32ClockDiv = TMR0_CLK_DIV64; //2分频
stcTmr0Init.u32Func = TMR0_FUNC_CMP; //输出比较 stcTmr0Init.u32Func = TMR0_FUNC_CMP; //输出比较
stcTmr0Init.u16CompareValue = (uint16_t)LCD_TIME_CMP_VALUE; stcTmr0Init.u16CompareValue = (uint16_t)LCD_TIME_CMP_VALUE;
(void)TMR0_Init(LCD_TIM_UINT, LCD_TIM_CH, &stcTmr0Init); (void)TMR0_Init(LCD_TIM_UINT, LCD_TIM_CH, &stcTmr0Init);
hdl_delay_ms(1U); hdl_delay_ms(1U);
@@ -72,7 +72,7 @@ void hdl_lcd_config(void)
LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM); LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM);
/* 引脚设置 */ /* 引脚设置 */
GPIO_SetDebugPort(GPIO_PIN_TRST,DISABLE); GPIO_SetDebugPort(GPIO_PIN_TRST,DISABLE);
(void)GPIO_StructInit(&stcGpioInit); (void)GPIO_StructInit(&stcGpioInit);
@@ -87,7 +87,7 @@ void hdl_lcd_config(void)
(void)GPIO_Init(LCD_RES_PORT, LCD_RES_PIN, &stcGpioInit); (void)GPIO_Init(LCD_RES_PORT, LCD_RES_PIN, &stcGpioInit);
(void)GPIO_Init(LCD_DC_PORT, LCD_DC_PIN, &stcGpioInit); (void)GPIO_Init(LCD_DC_PORT, LCD_DC_PIN, &stcGpioInit);
/* SPI配置 */ /* SPI配置 */
FCG_Fcg1PeriphClockCmd(LCD_SPI_CLK, ENABLE); FCG_Fcg1PeriphClockCmd(LCD_SPI_CLK, ENABLE);
SPI_StructInit(&stcSpiInit); SPI_StructInit(&stcSpiInit);
stcSpiInit.u32WireMode = SPI_3_WIRE; stcSpiInit.u32WireMode = SPI_3_WIRE;
@@ -101,14 +101,14 @@ void hdl_lcd_config(void)
stcSpiInit.u32FrameLevel = SPI_1_FRAME; stcSpiInit.u32FrameLevel = SPI_1_FRAME;
(void)SPI_Init(LCD_SPI_UINT, &stcSpiInit); (void)SPI_Init(LCD_SPI_UINT, &stcSpiInit);
/* DMA配置 */ /* DMA配置 */
FCG_Fcg0PeriphClockCmd(LCD_DMA_CLK, ENABLE); FCG_Fcg0PeriphClockCmd(LCD_DMA_CLK, ENABLE);
(void)DMA_StructInit(&stcDmaInit); (void)DMA_StructInit(&stcDmaInit);
stcDmaInit.u32BlockSize = 1UL; stcDmaInit.u32BlockSize = 1UL;
stcDmaInit.u32TransCount = 1; stcDmaInit.u32TransCount = 1;
stcDmaInit.u32DataWidth = DMA_DATAWIDTH_8BIT; //数据位宽 stcDmaInit.u32DataWidth = DMA_DATAWIDTH_8BIT; //数据位宽
stcDmaInit.u32SrcAddrInc = DMA_SRC_ADDR_INC; //源地址自增 stcDmaInit.u32SrcAddrInc = DMA_SRC_ADDR_INC; //源地址自增
stcDmaInit.u32DestAddrInc = DMA_DEST_ADDR_FIX; //目标地址固定 stcDmaInit.u32DestAddrInc = DMA_DEST_ADDR_FIX; //目标地址固定
stcDmaInit.u32SrcAddr = (uint32_t)(0); stcDmaInit.u32SrcAddr = (uint32_t)(0);
stcDmaInit.u32DestAddr = (uint32_t)(&LCD_SPI_UINT->DR); stcDmaInit.u32DestAddr = (uint32_t)(&LCD_SPI_UINT->DR);
stcDmaInit.u32IntEn = DMA_INT_ENABLE; stcDmaInit.u32IntEn = DMA_INT_ENABLE;
@@ -116,9 +116,9 @@ void hdl_lcd_config(void)
for (;;) { for (;;) {
} }
} }
AOS_SetTriggerEventSrc(LCD_DMA_TX_TRIG_CH, LCD_SPI_TX_EVT_SRC); //DMA发送触发源 AOS_SetTriggerEventSrc(LCD_DMA_TX_TRIG_CH, LCD_SPI_TX_EVT_SRC); //DMA发送触发源
/* DMA 中断配置 */ /* DMA 中断配置 */
DMA_TransCompleteIntCmd(LCD_DMA_UNIT, DMA_INT_BTC_CH0, DISABLE); DMA_TransCompleteIntCmd(LCD_DMA_UNIT, DMA_INT_BTC_CH0, DISABLE);
stcIrqSignConfig.enIntSrc = LCD_DMA_TX_INT_SRC; stcIrqSignConfig.enIntSrc = LCD_DMA_TX_INT_SRC;
@@ -146,19 +146,19 @@ static void hdl_lcd_write_byte(uint8_t dat)
void hdl_lcd_send(uint8_t *data, uint16_t len) void hdl_lcd_send(uint8_t *data, uint16_t len)
{ {
LCD_DC_SET();//写数据 LCD_DC_SET();//写数据
enTxCompleteFlag = RESET; enTxCompleteFlag = RESET;
DMA_SetSrcAddr(LCD_DMA_UNIT, LCD_DMA_TX_CH, (uint32_t)(data)); // 重新设置源地址和发送的数据 DMA_SetSrcAddr(LCD_DMA_UNIT, LCD_DMA_TX_CH, (uint32_t)(data)); // 重新设置源地址和发送的数据
DMA_SetTransCount(LCD_DMA_UNIT, LCD_DMA_TX_CH, len); //设置传输次数,传输一次,计数器减到0停止 DMA_SetTransCount(LCD_DMA_UNIT, LCD_DMA_TX_CH, len); //设置传输次数,传输一次,计数器减到0停止
DMA_ChCmd(LCD_DMA_UNIT, LCD_DMA_TX_CH, ENABLE); //使能DMA1通道 DMA_ChCmd(LCD_DMA_UNIT, LCD_DMA_TX_CH, ENABLE); //使能DMA1通道
SPI_Cmd(LCD_SPI_UINT, ENABLE); //使能SPI SPI_Cmd(LCD_SPI_UINT, ENABLE); //使能SPI
while (RESET == enTxCompleteFlag) { while (RESET == enTxCompleteFlag) {
} }
SPI_Cmd(LCD_SPI_UINT, DISABLE); //失能SPI SPI_Cmd(LCD_SPI_UINT, DISABLE); //失能SPI
} }
void hdl_lcd_dma_callback_register(lcd_dma_callback_t pCBS) void hdl_lcd_dma_callback_register(lcd_dma_callback_t pCBS)
@@ -178,70 +178,70 @@ void hdl_lcd_timer_callback_register(lcd_timer_callback_t pCBS)
} }
/****************************************************************************** /******************************************************************************
函数说明:LCD写入数据 函数说明:LCD写入数据
入口数据:dat 写入的数据 入口数据:dat 写入的数据
返回值: 无 返回值: 无
******************************************************************************/ ******************************************************************************/
void LCD_WR_DATA8(uint8_t dat) void LCD_WR_DATA8(uint8_t dat)
{ {
LCD_DC_SET();//写数据 LCD_DC_SET();//写数据
hdl_lcd_write_byte(dat); hdl_lcd_write_byte(dat);
} }
/****************************************************************************** /******************************************************************************
函数说明:LCD写入数据 函数说明:LCD写入数据
入口数据:dat 写入的数据 入口数据:dat 写入的数据
返回值: 无 返回值: 无
******************************************************************************/ ******************************************************************************/
void LCD_WR_DATA(uint16_t dat) void LCD_WR_DATA(uint16_t dat)
{ {
LCD_DC_SET();//写数据 LCD_DC_SET();//写数据
hdl_lcd_write_byte(dat>>8); hdl_lcd_write_byte(dat>>8);
hdl_lcd_write_byte(dat); hdl_lcd_write_byte(dat);
} }
/****************************************************************************** /******************************************************************************
函数说明:LCD写入命令 函数说明:LCD写入命令
入口数据:dat 写入的命令 入口数据:dat 写入的命令
返回值: 无 返回值: 无
******************************************************************************/ ******************************************************************************/
void LCD_WR_REG(uint8_t dat) void LCD_WR_REG(uint8_t dat)
{ {
LCD_DC_CLR();//写命令 LCD_DC_CLR();//写命令
hdl_lcd_write_byte(dat); hdl_lcd_write_byte(dat);
} }
/****************************************************************************** /******************************************************************************
函数说明:设置起始和结束地址 函数说明:设置起始和结束地址
入口数据:x1,x2 设置列的起始和结束地址 入口数据:x1,x2 设置列的起始和结束地址
y1,y2 设置行的起始和结束地址 y1,y2 设置行的起始和结束地址
返回值: 无 返回值: 无
******************************************************************************/ ******************************************************************************/
void LCD_Address_Set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) void LCD_Address_Set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)
{ {
LCD_WR_REG(0x2a);//列地址设置 LCD_WR_REG(0x2a);//列地址设置
LCD_WR_DATA(x1); LCD_WR_DATA(x1);
LCD_WR_DATA(x2); LCD_WR_DATA(x2);
LCD_WR_REG(0x2b);//行地址设置 LCD_WR_REG(0x2b);//行地址设置
LCD_WR_DATA(y1); LCD_WR_DATA(y1);
LCD_WR_DATA(y2); LCD_WR_DATA(y2);
LCD_WR_REG(0x2c);//储存器写 LCD_WR_REG(0x2c);//储存器写
} }
void hdl_lcd_fill(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2, uint8_t *color) void hdl_lcd_fill(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2, uint8_t *color)
{ {
LCD_Address_Set(x1,y1,x2,y2);//设置显示范围 LCD_Address_Set(x1,y1,x2,y2);//设置显示范围
hdl_lcd_send(color, (x2-x1+1)*(y2-y1+1)*2); hdl_lcd_send(color, (x2-x1+1)*(y2-y1+1)*2);
} }
void LCD_DrawPoint(uint16_t x,uint16_t y,uint16_t color) void LCD_DrawPoint(uint16_t x,uint16_t y,uint16_t color)
{ {
LCD_Address_Set(x,y,x,y);//设置光标位置 LCD_Address_Set(x,y,x,y);//设置光标位置
LCD_WR_DATA(color); LCD_WR_DATA(color);
} }
@@ -250,7 +250,7 @@ void hdl_lcd_init(void)
hdl_lcd_config(); hdl_lcd_config();
hdl_lcd_timer_config(); hdl_lcd_timer_config();
LCD_RES_CLR();//复位 LCD_RES_CLR();//复位
hdl_delay_ms(100); hdl_delay_ms(100);
LCD_RES_SET(); LCD_RES_SET();
hdl_delay_ms(100); hdl_delay_ms(100);
+13 -13
View File
@@ -6,7 +6,7 @@
#include "lvgl.h" #include "lvgl.h"
/* lcd刷屏定时器处理 */ /* lcd刷屏定时器处理 */
#define LCD_TIM_UINT CM_TMR0_1 #define LCD_TIM_UINT CM_TMR0_1
#define LCD_TIM_CLK FCG2_PERIPH_TMR0_1 #define LCD_TIM_CLK FCG2_PERIPH_TMR0_1
#define LCD_TIM_CH TMR0_CH_B #define LCD_TIM_CH TMR0_CH_B
@@ -18,7 +18,7 @@
#define LCD_TIME_CMP_VALUE (1563) #define LCD_TIME_CMP_VALUE (1563)
#define USE_HORIZONTAL 0 //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏 #define USE_HORIZONTAL 0 //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏
#define LCD_W 240 #define LCD_W 240
#define LCD_H 240 #define LCD_H 240
@@ -57,7 +57,7 @@
#define LCD_MOSI_Clr() GPIO_ResetPins(GPIO_PORT_B,GPIO_PIN_06)//SDA=MOSI #define LCD_MOSI_Clr() GPIO_ResetPins(GPIO_PORT_B,GPIO_PIN_06)//SDA=MOSI
#define LCD_MOSI_Set() GPIO_SetPins(GPIO_PORT_B,GPIO_PIN_06) #define LCD_MOSI_Set() GPIO_SetPins(GPIO_PORT_B,GPIO_PIN_06)
//画笔颜色 //画笔颜色
#define WHITE 0xFFFF #define WHITE 0xFFFF
#define BLACK 0x0000 #define BLACK 0x0000
#define BLUE 0x001F #define BLUE 0x001F
@@ -69,16 +69,16 @@
#define GREEN 0x07E0 #define GREEN 0x07E0
#define CYAN 0x7FFF #define CYAN 0x7FFF
#define YELLOW 0xFFE0 #define YELLOW 0xFFE0
#define BROWN 0XBC40 //棕色 #define BROWN 0XBC40 //棕色
#define BRRED 0XFC07 //棕红色 #define BRRED 0XFC07 //棕红色
#define GRAY 0X8430 //灰色 #define GRAY 0X8430 //灰色
#define DARKBLUE 0X01CF //深蓝色 #define DARKBLUE 0X01CF //深蓝色
#define LIGHTBLUE 0X7D7C //浅蓝色 #define LIGHTBLUE 0X7D7C //浅蓝色
#define GRAYBLUE 0X5458 //灰蓝色 #define GRAYBLUE 0X5458 //灰蓝色
#define LIGHTGREEN 0X841F //浅绿色 #define LIGHTGREEN 0X841F //浅绿色
#define LGRAY 0XC618 //浅灰色(PANNEL),窗体背景色 #define LGRAY 0XC618 //浅灰色(PANNEL),窗体背景色
#define LGRAYBLUE 0XA651 //浅灰蓝色(中间层颜色) #define LGRAYBLUE 0XA651 //浅灰蓝色(中间层颜色)
#define LBBLUE 0X2B12 //浅棕蓝色(选择条目的反色) #define LBBLUE 0X2B12 //浅棕蓝色(选择条目的反色)
typedef void (*lcd_dma_callback_t)(void); typedef void (*lcd_dma_callback_t)(void);
typedef void (*lcd_timer_callback_t)(void); typedef void (*lcd_timer_callback_t)(void);
+33 -33
View File
@@ -7,7 +7,7 @@ void hdl_spi1_init(void)
LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM); LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM);
/* 配置SPI引脚 */ /* 閰嶇疆SPI寮曡剼 */
(void)GPIO_StructInit(&stcGpioInit); (void)GPIO_StructInit(&stcGpioInit);
stcGpioInit.u16PinDrv = PIN_HIGH_DRV; stcGpioInit.u16PinDrv = PIN_HIGH_DRV;
@@ -21,20 +21,20 @@ void hdl_spi1_init(void)
GPIO_SetFunc(SPI1_MOSI_PORT, SPI1_MOSI_PIN, SPI1_MOSI_FUNC); GPIO_SetFunc(SPI1_MOSI_PORT, SPI1_MOSI_PIN, SPI1_MOSI_FUNC);
GPIO_SetFunc(SPI1_MISO_PORT, SPI1_MISO_PIN, SPI1_MISO_FUNC); GPIO_SetFunc(SPI1_MISO_PORT, SPI1_MISO_PIN, SPI1_MISO_FUNC);
/* 配置SPI参数 */ /* 閰嶇疆SPI鍙傛暟 */
SPI_StructInit(&stcSpiInit); SPI_StructInit(&stcSpiInit);
FCG_Fcg1PeriphClockCmd(SPI1_CLOCK, ENABLE); FCG_Fcg1PeriphClockCmd(SPI1_CLOCK, ENABLE);
stcSpiInit.u32WireMode = SPI_3_WIRE; //3线SPI stcSpiInit.u32WireMode = SPI_3_WIRE; //3绾縎PI
stcSpiInit.u32TransMode = SPI_FULL_DUPLEX; //全双工 stcSpiInit.u32TransMode = SPI_FULL_DUPLEX; //鍏ㄥ弻宸?
stcSpiInit.u32MasterSlave = SPI_MASTER; //主机 stcSpiInit.u32MasterSlave = SPI_MASTER; //涓绘満
stcSpiInit.u32ModeFaultDetect = SPI_MD_FAULT_DETECT_DISABLE; // 禁用模式故障检测 stcSpiInit.u32ModeFaultDetect = SPI_MD_FAULT_DETECT_DISABLE; // 绂佺敤妯″紡鏁呴殰妫€娴?
stcSpiInit.u32Parity = SPI_PARITY_INVD; //无奇偶校验 stcSpiInit.u32Parity = SPI_PARITY_INVD; //鏃犲鍋舵牎楠?
stcSpiInit.u32SpiMode = SPI_MD_3; //SPI模式3 stcSpiInit.u32SpiMode = SPI_MD_3; //SPI妯″紡3
stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV64; //预分频 stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV64; //棰勫垎棰?
stcSpiInit.u32DataBits = SPI_DATA_SIZE_8BIT; //数据宽度 stcSpiInit.u32DataBits = SPI_DATA_SIZE_8BIT; //鏁版嵁瀹藉害
stcSpiInit.u32FirstBit = SPI_FIRST_MSB; //MSB高位有效 stcSpiInit.u32FirstBit = SPI_FIRST_MSB; //MSB楂樹綅鏈夋晥
(void)SPI_Init(SPI1_INSTANCE, &stcSpiInit); (void)SPI_Init(SPI1_INSTANCE, &stcSpiInit);
SPI_Cmd(SPI1_INSTANCE, ENABLE); SPI_Cmd(SPI1_INSTANCE, ENABLE);
@@ -78,7 +78,7 @@ void hdl_spi2_init(void)
LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM); LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM);
/* 配置SPI引脚 */ /* 閰嶇疆SPI寮曡剼 */
(void)GPIO_StructInit(&stcGpioInit); (void)GPIO_StructInit(&stcGpioInit);
stcGpioInit.u16PinDrv = PIN_HIGH_DRV; stcGpioInit.u16PinDrv = PIN_HIGH_DRV;
@@ -92,20 +92,20 @@ void hdl_spi2_init(void)
GPIO_SetFunc(SPI2_MOSI_PORT, SPI2_MOSI_PIN, SPI2_MOSI_FUNC); GPIO_SetFunc(SPI2_MOSI_PORT, SPI2_MOSI_PIN, SPI2_MOSI_FUNC);
GPIO_SetFunc(SPI2_MISO_PORT, SPI2_MISO_PIN, SPI2_MISO_FUNC); GPIO_SetFunc(SPI2_MISO_PORT, SPI2_MISO_PIN, SPI2_MISO_FUNC);
/* 配置SPI参数 */ /* 閰嶇疆SPI鍙傛暟 */
SPI_StructInit(&stcSpiInit); SPI_StructInit(&stcSpiInit);
FCG_Fcg1PeriphClockCmd(SPI2_CLOCK, ENABLE); FCG_Fcg1PeriphClockCmd(SPI2_CLOCK, ENABLE);
stcSpiInit.u32WireMode = SPI_3_WIRE; //3线SPI stcSpiInit.u32WireMode = SPI_3_WIRE; //3绾縎PI
stcSpiInit.u32TransMode = SPI_FULL_DUPLEX; //全双工 stcSpiInit.u32TransMode = SPI_FULL_DUPLEX; //鍏ㄥ弻宸?
stcSpiInit.u32MasterSlave = SPI_MASTER; //主机 stcSpiInit.u32MasterSlave = SPI_MASTER; //涓绘満
stcSpiInit.u32ModeFaultDetect = SPI_MD_FAULT_DETECT_DISABLE; // 禁用模式故障检测 stcSpiInit.u32ModeFaultDetect = SPI_MD_FAULT_DETECT_DISABLE; // 绂佺敤妯″紡鏁呴殰妫€娴?
stcSpiInit.u32Parity = SPI_PARITY_INVD; //无奇偶校验 stcSpiInit.u32Parity = SPI_PARITY_INVD; //鏃犲鍋舵牎楠?
stcSpiInit.u32SpiMode = SPI_MD_3; //SPI模式3 stcSpiInit.u32SpiMode = SPI_MD_3; //SPI妯″紡3
stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV64; //预分频 stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV64; //棰勫垎棰?
stcSpiInit.u32DataBits = SPI_DATA_SIZE_8BIT; //数据宽度 stcSpiInit.u32DataBits = SPI_DATA_SIZE_8BIT; //鏁版嵁瀹藉害
stcSpiInit.u32FirstBit = SPI_FIRST_MSB; //MSB高位有效 stcSpiInit.u32FirstBit = SPI_FIRST_MSB; //MSB楂樹綅鏈夋晥
(void)SPI_Init(SPI2_INSTANCE, &stcSpiInit); (void)SPI_Init(SPI2_INSTANCE, &stcSpiInit);
SPI_Cmd(SPI2_INSTANCE, ENABLE); SPI_Cmd(SPI2_INSTANCE, ENABLE);
@@ -150,7 +150,7 @@ void hdl_spi3_init(void)
LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM); LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM);
/* 配置SPI引脚 */ /* 閰嶇疆SPI寮曡剼 */
(void)GPIO_StructInit(&stcGpioInit); (void)GPIO_StructInit(&stcGpioInit);
stcGpioInit.u16PinDrv = PIN_HIGH_DRV; stcGpioInit.u16PinDrv = PIN_HIGH_DRV;
@@ -164,20 +164,20 @@ void hdl_spi3_init(void)
GPIO_SetFunc(SPI3_MOSI_PORT, SPI3_MOSI_PIN, SPI3_MOSI_FUNC); GPIO_SetFunc(SPI3_MOSI_PORT, SPI3_MOSI_PIN, SPI3_MOSI_FUNC);
GPIO_SetFunc(SPI3_MISO_PORT, SPI3_MISO_PIN, SPI3_MISO_FUNC); GPIO_SetFunc(SPI3_MISO_PORT, SPI3_MISO_PIN, SPI3_MISO_FUNC);
/* 配置SPI参数 */ /* 閰嶇疆SPI鍙傛暟 */
SPI_StructInit(&stcSpiInit); SPI_StructInit(&stcSpiInit);
FCG_Fcg1PeriphClockCmd(SPI3_CLOCK, ENABLE); FCG_Fcg1PeriphClockCmd(SPI3_CLOCK, ENABLE);
stcSpiInit.u32WireMode = SPI_3_WIRE; //3线SPI stcSpiInit.u32WireMode = SPI_3_WIRE; //3绾縎PI
stcSpiInit.u32TransMode = SPI_FULL_DUPLEX; //全双工 stcSpiInit.u32TransMode = SPI_FULL_DUPLEX; //鍏ㄥ弻宸?
stcSpiInit.u32MasterSlave = SPI_MASTER; //主机 stcSpiInit.u32MasterSlave = SPI_MASTER; //涓绘満
stcSpiInit.u32ModeFaultDetect = SPI_MD_FAULT_DETECT_DISABLE; // 禁用模式故障检测 stcSpiInit.u32ModeFaultDetect = SPI_MD_FAULT_DETECT_DISABLE; // 绂佺敤妯″紡鏁呴殰妫€娴?
stcSpiInit.u32Parity = SPI_PARITY_INVD; //无奇偶校验 stcSpiInit.u32Parity = SPI_PARITY_INVD; //鏃犲鍋舵牎楠?
stcSpiInit.u32SpiMode = SPI_MD_3; //SPI模式3 stcSpiInit.u32SpiMode = SPI_MD_3; //SPI妯″紡3
stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV64; //预分频 stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV64; //棰勫垎棰?
stcSpiInit.u32DataBits = SPI_DATA_SIZE_8BIT; //数据宽度 stcSpiInit.u32DataBits = SPI_DATA_SIZE_8BIT; //鏁版嵁瀹藉害
stcSpiInit.u32FirstBit = SPI_FIRST_MSB; //MSB高位有效 stcSpiInit.u32FirstBit = SPI_FIRST_MSB; //MSB楂樹綅鏈夋晥
(void)SPI_Init(SPI3_INSTANCE, &stcSpiInit); (void)SPI_Init(SPI3_INSTANCE, &stcSpiInit);
SPI_Cmd(SPI3_INSTANCE, ENABLE); SPI_Cmd(SPI3_INSTANCE, ENABLE);
+11 -11
View File
@@ -7,7 +7,7 @@ void hdl_spi4_init(void)
LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM); LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM);
/* 配置SPI引脚 */ /* 閰嶇疆SPI寮曡剼 */
(void)GPIO_StructInit(&stcGpioInit); (void)GPIO_StructInit(&stcGpioInit);
stcGpioInit.u16PinDrv = PIN_HIGH_DRV; stcGpioInit.u16PinDrv = PIN_HIGH_DRV;
@@ -21,20 +21,20 @@ void hdl_spi4_init(void)
GPIO_SetFunc(SPI4_MOSI_PORT, SPI4_MOSI_PIN, SPI4_MOSI_FUNC); GPIO_SetFunc(SPI4_MOSI_PORT, SPI4_MOSI_PIN, SPI4_MOSI_FUNC);
GPIO_SetFunc(SPI4_MISO_PORT, SPI4_MISO_PIN, SPI4_MISO_FUNC); GPIO_SetFunc(SPI4_MISO_PORT, SPI4_MISO_PIN, SPI4_MISO_FUNC);
/* 配置SPI参数 */ /* 閰嶇疆SPI鍙傛暟 */
SPI_StructInit(&stcSpiInit); SPI_StructInit(&stcSpiInit);
FCG_Fcg1PeriphClockCmd(SPI4_CLOCK, ENABLE); FCG_Fcg1PeriphClockCmd(SPI4_CLOCK, ENABLE);
stcSpiInit.u32WireMode = SPI_3_WIRE; //3线SPI stcSpiInit.u32WireMode = SPI_3_WIRE; //3绾縎PI
stcSpiInit.u32TransMode = SPI_FULL_DUPLEX; //全双工 stcSpiInit.u32TransMode = SPI_FULL_DUPLEX; //鍏ㄥ弻宸?
stcSpiInit.u32MasterSlave = SPI_MASTER; //主机 stcSpiInit.u32MasterSlave = SPI_MASTER; //涓绘満
stcSpiInit.u32ModeFaultDetect = SPI_MD_FAULT_DETECT_DISABLE; // 禁用模式故障检测 stcSpiInit.u32ModeFaultDetect = SPI_MD_FAULT_DETECT_DISABLE; // 绂佺敤妯″紡鏁呴殰妫€娴?
stcSpiInit.u32Parity = SPI_PARITY_INVD; //无奇偶校验 stcSpiInit.u32Parity = SPI_PARITY_INVD; //鏃犲鍋舵牎楠?
stcSpiInit.u32SpiMode = SPI_MD_3; //SPI模式3 stcSpiInit.u32SpiMode = SPI_MD_3; //SPI妯″紡3
stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV64; //预分频 stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV64; //棰勫垎棰?
stcSpiInit.u32DataBits = SPI_DATA_SIZE_8BIT; //数据宽度 stcSpiInit.u32DataBits = SPI_DATA_SIZE_8BIT; //鏁版嵁瀹藉害
stcSpiInit.u32FirstBit = SPI_FIRST_MSB; //MSB高位有效 stcSpiInit.u32FirstBit = SPI_FIRST_MSB; //MSB楂樹綅鏈夋晥
(void)SPI_Init(SPI4_INSTANCE, &stcSpiInit); (void)SPI_Init(SPI4_INSTANCE, &stcSpiInit);
SPI_Cmd(SPI4_INSTANCE, ENABLE); SPI_Cmd(SPI4_INSTANCE, ENABLE);
+9 -9
View File
@@ -6,11 +6,11 @@
#include "hdl_usart.h" #include "hdl_usart.h"
//定义数据获取回调函数 //瀹氫箟鏁版嵁鑾峰彇鍥炶皟鍑芥暟
static hdl_debug_uart_rx_cb_t debug_rx_callback_cbs; static hdl_debug_uart_rx_cb_t debug_rx_callback_cbs;
static com_rx_callback com_rx_callback_cbs; static com_rx_callback com_rx_callback_cbs;
//接收中断 //鎺ユ敹涓柇
static void COM_Rx_IrqCallback(void); static void COM_Rx_IrqCallback(void);
static void COM_RxErr_IrqCallback(void); static void COM_RxErr_IrqCallback(void);
@@ -25,7 +25,7 @@ static void INTC_IrqInstalHandler(const stc_irq_signin_config_t* pstcConfig, uin
} }
} }
//调试串口 //璋冭瘯涓插彛
static void DEBUG_RxErr_IrqCallback(void) static void DEBUG_RxErr_IrqCallback(void)
{ {
(void)USART_ReadData(DEBUG_UART); (void)USART_ReadData(DEBUG_UART);
@@ -80,7 +80,7 @@ void hdl_debug_uart_init(void)
stcUartInit.u32OverSampleBit = USART_OVER_SAMPLE_8BIT; stcUartInit.u32OverSampleBit = USART_OVER_SAMPLE_8BIT;
USART_UART_Init(DEBUG_UART, &stcUartInit, NULL); USART_UART_Init(DEBUG_UART, &stcUartInit, NULL);
//接收中断配置 //鎺ユ敹涓柇閰嶇疆
stc_irq_signin_config_t stcIrqSigninConfig; stc_irq_signin_config_t stcIrqSigninConfig;
stcIrqSigninConfig.enIRQn = DEBUG_UART_INT_EI_IRQ; stcIrqSigninConfig.enIRQn = DEBUG_UART_INT_EI_IRQ;
stcIrqSigninConfig.enIntSrc = DEBUG_UART_INT_EI; stcIrqSigninConfig.enIntSrc = DEBUG_UART_INT_EI;
@@ -127,7 +127,7 @@ int hdl_debug_uart_getc(int *ch)
} }
//通信模块串口初始化 //閫氫俊妯″潡涓插彛鍒濆鍖?
void hdl_com_uart_init(void) void hdl_com_uart_init(void)
{ {
stc_usart_uart_init_t stcUartInit={0}; stc_usart_uart_init_t stcUartInit={0};
@@ -149,7 +149,7 @@ void hdl_com_uart_init(void)
stcUartInit.u32OverSampleBit = USART_OVER_SAMPLE_8BIT; stcUartInit.u32OverSampleBit = USART_OVER_SAMPLE_8BIT;
USART_UART_Init(COM_UART, &stcUartInit, NULL); USART_UART_Init(COM_UART, &stcUartInit, NULL);
//接收中断配置 //鎺ユ敹涓柇閰嶇疆
stcIrqSigninConfig.enIRQn = COM_INT_EI_IRQ; stcIrqSigninConfig.enIRQn = COM_INT_EI_IRQ;
stcIrqSigninConfig.enIntSrc = COM_INT_EI; stcIrqSigninConfig.enIntSrc = COM_INT_EI;
stcIrqSigninConfig.pfnCallback = &COM_RxErr_IrqCallback; stcIrqSigninConfig.pfnCallback = &COM_RxErr_IrqCallback;
@@ -167,7 +167,7 @@ void hdl_com_uart_init(void)
} }
//通信发送数据 //閫氫俊鍙戦€佹暟鎹?
void hdl_com_uart_send(uint8_t* w_buf, uint16_t len) void hdl_com_uart_send(uint8_t* w_buf, uint16_t len)
{ {
uint8_t i; uint8_t i;
@@ -180,7 +180,7 @@ void hdl_com_uart_send(uint8_t* w_buf, uint16_t len)
} }
} }
//通信回调函数注册 //閫氫俊鍥炶皟鍑芥暟娉ㄥ唽
void hdl_com_uart_rx_register(com_rx_callback pCBS) void hdl_com_uart_rx_register(com_rx_callback pCBS)
{ {
if (com_rx_callback_cbs == 0) if (com_rx_callback_cbs == 0)
@@ -189,7 +189,7 @@ void hdl_com_uart_rx_register(com_rx_callback pCBS)
} }
} }
//通信接收中断 //閫氫俊鎺ユ敹涓柇
static void COM_Rx_IrqCallback(void) static void COM_Rx_IrqCallback(void)
{ {
uint8_t r_data = 0; uint8_t r_data = 0;
+4 -4
View File
@@ -15,7 +15,7 @@ void hdl_usb_init(void)
LL_PERIPH_WE(LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_GPIO | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM); LL_PERIPH_WE(LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_GPIO | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM);
/* 时钟配置 */ /* 鏃堕挓閰嶇疆 */
(void)CLK_PLLxStructInit(&stcUpllInit); (void)CLK_PLLxStructInit(&stcUpllInit);
stcUpllInit.u8PLLState = CLK_PLLX_ON; stcUpllInit.u8PLLState = CLK_PLLX_ON;
stcUpllInit.PLLCFGR = 0UL; stcUpllInit.PLLCFGR = 0UL;
@@ -27,7 +27,7 @@ void hdl_usb_init(void)
(void)CLK_PLLxInit(&stcUpllInit); (void)CLK_PLLxInit(&stcUpllInit);
CLK_SetUSBClockSrc(CLK_USBCLK_PLLXP); CLK_SetUSBClockSrc(CLK_USBCLK_PLLXP);
/* 引脚配置 */ /* 寮曡剼閰嶇疆 */
(void)GPIO_StructInit(&stcGpioCfg); (void)GPIO_StructInit(&stcGpioCfg);
stcGpioCfg.u16PinAttr = PIN_ATTR_ANALOG; stcGpioCfg.u16PinAttr = PIN_ATTR_ANALOG;
@@ -38,10 +38,10 @@ void hdl_usb_init(void)
// GPIO_SetFunc(USB_VBUS_PORT, USB_VBUS_PIN, GPIO_FUNC_10); /* VBUS */ // GPIO_SetFunc(USB_VBUS_PORT, USB_VBUS_PIN, GPIO_FUNC_10); /* VBUS */
FCG_Fcg1PeriphClockCmd(FCG1_PERIPH_USBFS, ENABLE); FCG_Fcg1PeriphClockCmd(FCG1_PERIPH_USBFS, ENABLE);
/* 中断配置 */ /* 涓柇閰嶇疆 */
stcIrqRegiConf.enIRQn = INT030_IRQn; stcIrqRegiConf.enIRQn = INT030_IRQn;
stcIrqRegiConf.enIntSrc = INT_SRC_USBFS_GLB; stcIrqRegiConf.enIntSrc = INT_SRC_USBFS_GLB;
stcIrqRegiConf.pfnCallback = &USB_IRQ_Handler; // 添加中断函数 stcIrqRegiConf.pfnCallback = &USB_IRQ_Handler; // 娣诲姞涓柇鍑芥暟
(void)INTC_IrqSignIn(&stcIrqRegiConf); (void)INTC_IrqSignIn(&stcIrqRegiConf);
NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn); NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIO_15); NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIO_15);
+15 -15
View File
@@ -5,15 +5,15 @@
#include "stdio.h" #include "stdio.h"
// 系统空闲条件 // 绯荤粺绌洪棽鏉′欢
#define SYSTEM_IS_IDLE() (ALL_TASKS_IDLE()) #define SYSTEM_IS_IDLE() (ALL_TASKS_IDLE())
#define DEEP_SLEEP_THRESHOLD 5 // 进入深度休眠的空闲计数阈值 #define DEEP_SLEEP_THRESHOLD 5 // 杩涘叆娣卞害浼戠湢鐨勭┖闂茶鏁伴槇鍊?
static struct { static struct {
pm_adapter_t default_adapter; pm_adapter_t default_adapter;
pt_t pt; pt_t pt;
pm_mode_t current_mode; // 当前功耗模式 pm_mode_t current_mode; // 褰撳墠鍔熻€楁ā寮?
uint32_t ref_count[PM_SLEEP_MODE_MAX]; // 引用计数数组 uint32_t ref_count[PM_SLEEP_MODE_MAX]; // 寮曠敤璁℃暟鏁扮粍
} pm; } pm;
static bool system_is_idle(void) static bool system_is_idle(void)
@@ -22,13 +22,13 @@ static bool system_is_idle(void)
} }
/* /*
功耗管理:遍历所有任务状态,然后根据用于请求的功耗模式,调用适配器接口,调整MCU的运行模式 鍔熻€楃鐞嗭細閬嶅巻鎵€鏈変换鍔$姸鎬侊紝鐒跺悗鏍规嵁鐢ㄤ簬璇锋眰鐨勫姛鑰楁ā寮忥紝璋冪敤閫傞厤鍣ㄦ帴鍙o紝璋冩暣MCU鐨勮繍琛屾ā寮?
*/ */
static void pt_pm_handler(void) { static void pt_pm_handler(void) {
if (system_is_idle()) { if (system_is_idle()) {
// 切换到下一个可用的功耗模式 // 鍒囨崲鍒颁笅涓€涓彲鐢ㄧ殑鍔熻€楁ā寮?
pm_mode_t next_mode = PM_SLEEP_MODE_NONE; pm_mode_t next_mode = PM_SLEEP_MODE_NONE;
for (pm_mode_t m = PM_SLEEP_MODE_NONE; m < PM_SLEEP_MODE_MAX; m++) { for (pm_mode_t m = PM_SLEEP_MODE_NONE; m < PM_SLEEP_MODE_MAX; m++) {
if (pm.ref_count[m] > 0 ) { if (pm.ref_count[m] > 0 ) {
@@ -43,7 +43,7 @@ static void pt_pm_handler(void) {
} else { } else {
pt_pm_release(PM_SLEEP_MODE_NONE); // 唤醒系统 pt_pm_release(PM_SLEEP_MODE_NONE); // 鍞ら啋绯荤粺
if (pm.default_adapter.wakeup) { if (pm.default_adapter.wakeup) {
pm.default_adapter.wakeup(); pm.default_adapter.wakeup();
@@ -55,7 +55,7 @@ static void pt_pm_handler(void) {
void pt_pm_adapter_init(pm_adapter_t *adapter) { void pt_pm_adapter_init(pm_adapter_t *adapter) {
if (adapter) { if (adapter) {
pm.default_adapter = *adapter; // 复制整个结构体 pm.default_adapter = *adapter; // 澶嶅埗鏁翠釜缁撴瀯浣?
} else { } else {
pm.default_adapter.sleep = 0; pm.default_adapter.sleep = 0;
pm.default_adapter.wakeup = 0; pm.default_adapter.wakeup = 0;
@@ -74,7 +74,7 @@ int pt_task_pm(void) {
while (1) { while (1) {
pt_pm_handler(); // 处理功耗状态 pt_pm_handler(); // 澶勭悊鍔熻€楃姸鎬?
PT_DELAY_MS(&pm.pt, system_is_idle() ? 1000 : 100); PT_DELAY_MS(&pm.pt, system_is_idle() ? 1000 : 100);
} }
@@ -83,23 +83,23 @@ int pt_task_pm(void) {
} }
/* /*
请求功耗模式:引用计数自增,如果为1,则调用适配器接口,调整MCU的运行模式 璇锋眰鍔熻€楁ā寮忥細寮曠敤璁℃暟鑷锛屽鏋滀负1锛屽垯璋冪敤閫傞厤鍣ㄦ帴鍙o紝璋冩暣MCU鐨勮繍琛屾ā寮?
*/ */
void pt_pm_request(pm_mode_t mode) { void pt_pm_request(pm_mode_t mode) {
if (mode >= PM_SLEEP_MODE_MAX) { if (mode >= PM_SLEEP_MODE_MAX) {
return; // 无效模式 return; // 鏃犳晥妯″紡
} }
pm.ref_count[mode]++; // 仅操作引用计数 pm.ref_count[mode]++; // 浠呮搷浣滃紩鐢ㄨ鏁?
} }
/* /*
释放功耗模式:引用计数自减,如果为0,则调用适配器接口,调整MCU的运行模式 閲婃斁鍔熻€楁ā寮忥細寮曠敤璁℃暟鑷噺锛屽鏋滀负0锛屽垯璋冪敤閫傞厤鍣ㄦ帴鍙o紝璋冩暣MCU鐨勮繍琛屾ā寮?
*/ */
void pt_pm_release(pm_mode_t mode) { void pt_pm_release(pm_mode_t mode) {
if (mode >= PM_SLEEP_MODE_MAX) { if (mode >= PM_SLEEP_MODE_MAX) {
return; // 无效模式 return; // 鏃犳晥妯″紡
} }
if (pm.ref_count[mode] > 0) { if (pm.ref_count[mode] > 0) {
pm.ref_count[mode]--; // 仅操作引用计数 pm.ref_count[mode]--; // 浠呮搷浣滃紩鐢ㄨ鏁?
} }
} }