feat(ADC): 重构采样器初始化为构造函数

将 `sampler::init()` 方法改为构造函数 `sampler()`,并在其中完成 DMA 和 ADC 的初始化配置,
同时进行初始采样操作。

feat(CAN): 更新角度传感器类接口并修复拼写错误
将全局函数 `KHT7823_readAngle()` 替换为 `angle_sensor::readAngle()` 类成员函数调用,
统一命名风格并修正部分函数名中的拼写错误(如 KHT7823 -> KTH7823)。

refactor(Can): 移除冗余的 timeout 成员变量
在 `CAN_transmiter` 类中移除了未使用的 `timeout` 成员变量,减少资源占用。

refactor(Timer): 删除重复注释内容
清理 `Timer.cpp` 中关于定时器配置的重复注释信息,保留核心常量定义。

refactor(ADC): 修正头文件中函数声明
将 `adc.h` 中的 `init()` 函数声明更新为构造函数 `sampler()`,保持实现与声明一致。

refactor(ang_sensor): 将角度传感器相关功能封装为类
将原先分散的 C 风格函数封装进 `angle_sensor` 类中,提升代码结构清晰度和可维护性。
添加构造函数和读取角度的方法,并修正原有函数命名不一致问题。

refactor(main): 调整初始化顺序并移除多余包含
修改 `main.cpp` 中外设初始化顺序,移除对 `core_cm4.h` 的重复包含,
并将角度传感器和采样器通过类实例方式初始化。
This commit is contained in:
cbb
2025-11-01 23:41:32 +08:00
parent bd77f7a9a9
commit 0c5ab9c1d8
8 changed files with 43 additions and 33 deletions
+15 -9
View File
@@ -4,7 +4,6 @@
#include "gd32c10x_spi.h"
#include <stdint.h>
#define SPI_CS_ENABLE() gpio_bit_reset(GPIOA, GPIO_PIN_15)
#define SPI_CS_DISABLE() gpio_bit_set(GPIOA, GPIO_PIN_15)
@@ -179,7 +178,7 @@ extern "C" void DMA0_Channel1_IRQHandler(void) {
* @brief 角度传感器初始化
* @param 无
*/
void KHT7823_gpio_init(void) {
void KTH7823_gpio_init(void) {
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_SPI0);
@@ -204,7 +203,7 @@ void KHT7823_gpio_init(void) {
*
* @details Configures SPI hardware and initializes necessary settings
*/
void KHT7823_spi_init(void) {
void KTH7823_spi_init(void) {
spi_parameter_struct spi_init_str;
spi_struct_para_init(&spi_init_str);
@@ -224,27 +223,34 @@ void KHT7823_spi_init(void) {
}
/**
* @brief KHT7823 初始化
* @brief KTH7823 初始化
*/
void KHT7823_init(void) {
KHT7823_gpio_init(); // GPIO初始化
KHT7823_spi_init(); // SPI初始化
void angle_sensor::KTH7823_init(void) {
KTH7823_gpio_init(); // GPIO初始化
KTH7823_spi_init(); // SPI初始化
spi_dma_init(); // DMA初始化
}
/**
* @brief 角度传感器构造函数
*/
angle_sensor::angle_sensor(void) { KTH7823_init(); }
/**
* @brief 读取传感器数据
* @return 传感器数据
*/
float KHT7823_readAngle() {
float angle_sensor::readAngle(void) {
u16 u16data = FAULT_RECEIVE;
SPI_CS_ENABLE();
// 使用DMA发送命令并接收数据
u16 u16data;
if (spi_rw_half_word_dma(SPI0, DEFAULT_COMMAND, &u16data) == 0) {
SPI_CS_DISABLE();
return u16data * ANGLE_FACTOR;
} else {
SPI_CS_DISABLE();
// 处理读取错误
printf("Error reading angle from sensor.\n");
return FAULT_RECEIVE; // 错误返回
}
}