diff --git a/applications/main/main.c b/applications/main/main.c index d48c4e3..d2e6da4 100644 --- a/applications/main/main.c +++ b/applications/main/main.c @@ -77,6 +77,7 @@ int main(void) // gd32_usart_init(); i2c_init(); adc_init(); + usart_init(); @@ -98,7 +99,8 @@ int main(void) } /* 写ttest到MB85TEST_ADD地址 */ mb85rc64_write_read(MB85TEST_ADD, (unsigned char *)&ttest, sizeof(ttest), PAGE_WRITE); - + uint8_t rx_data = 0; + uint8_t tx_data = 0x61; // 进入主循环或启动其他任务 while (1) { @@ -116,6 +118,36 @@ int main(void) adc_software_trigger_enable(ADCX, SEQUENCE_CHANNEL);// 软件触发使能 后续接读取 #endif + // while (usart_flag_get(USART_PERIPH, USART_FLAG_RBNE) == RESET); + // usart_flag_clear(USART_PERIPH, USART_FLAG_RBNE); + // rx_data = usart_data_receive(USART_PERIPH); + // if(rx_data == 'a') + // { + // beep_enable(); + // delay_ms(250); + // beep_disable(); + // } + // else if(rx_data == 'b') + // { + // beep_enable(); + // delay_ms(500); + // beep_disable(); + // } + + while(RESET == usart_flag_get(USART_PERIPH, USART_FLAG_TBE)) + { + + } + //写寄存器 + usart_data_transmit(USART_PERIPH, tx_data); + //等待发送完成 + while(RESET == usart_flag_get(USART_PERIPH, USART_FLAG_TC)) + { + + } + usart_flag_clear(USART_PERIPH, USART_FLAG_TC); + + // memset(&ttest, 0, sizeof(ttest)); mb85rc64_write_read(MB85TEST_ADD, (unsigned char *)&ttest, sizeof(ttest), ADDR_READ); ttest.tmperature = ptz_temperature_collect_tmp75_task(); diff --git a/doc/SL_MWYT_SERV24_V22_250917.pdf b/doc/scheme/SL_MWYT_SERV24_V22_250917.pdf similarity index 100% rename from doc/SL_MWYT_SERV24_V22_250917.pdf rename to doc/scheme/SL_MWYT_SERV24_V22_250917.pdf diff --git a/doc/hy_mwyt_3s24_v20_221118.pdf b/doc/scheme/hy_mwyt_3s24_v20_221118.pdf similarity index 100% rename from doc/hy_mwyt_3s24_v20_221118.pdf rename to doc/scheme/hy_mwyt_3s24_v20_221118.pdf diff --git a/doc/sl_mwyt_serv24_v22_250728.pdf b/doc/scheme/sl_mwyt_serv24_v22_250728.pdf similarity index 100% rename from doc/sl_mwyt_serv24_v22_250728.pdf rename to doc/scheme/sl_mwyt_serv24_v22_250728.pdf diff --git a/doc/MB85RC64.pdf b/doc/驱动芯片/MB85RC64.pdf similarity index 100% rename from doc/MB85RC64.pdf rename to doc/驱动芯片/MB85RC64.pdf diff --git a/doc/tmp75.pdf b/doc/驱动芯片/tmp75.pdf similarity index 100% rename from doc/tmp75.pdf rename to doc/驱动芯片/tmp75.pdf diff --git a/drivers/drv_i2c.h b/drivers/drv_i2c.h index c7b8003..e5f6416 100644 --- a/drivers/drv_i2c.h +++ b/drivers/drv_i2c.h @@ -16,9 +16,6 @@ #include "gd32f4xx.h" #include "delay.h" -#include "beep.h" - - // #define SOFTWARE_I2C diff --git a/drivers/drv_usart.c b/drivers/drv_usart.c index da183a3..4555112 100644 --- a/drivers/drv_usart.c +++ b/drivers/drv_usart.c @@ -1,93 +1,40 @@ #include "drv_usart.h" -#include "gd32f4xx.h" -// 串口配置结构体 -static struct gd32_usart_config usart_config[] = { - { - .name = "test", - .usart_periph = USART0, - .rcu_periph_clock = RCU_USART0, - .gpio_port = GPIOA, - .rcu_gpio_clock = RCU_GPIOA, - .tx_pin = GPIO_PIN_9, - .rx_pin = GPIO_PIN_10, - .baud_rate = 9600, - .irq_type = USART0_IRQn - }, - // 可以添加更多串口配置 -}; - -// 初始化所有配置的串口 -void gd32_usart_init(void) +void usart_init(void) { - for (int i = 0; i < sizeof(usart_config) / sizeof(usart_config[0]); i++) - { - gd32_usart_configure(&usart_config[i]); - } + usart_colok_config(); + + usart_gpio_config(); } -// 配置单个串口 -void gd32_usart_configure(struct gd32_usart_config *config) +void usart_colok_config(void) +{ + rcu_periph_clock_enable(USART_GPIO_CLK);//使能引脚时钟 + rcu_periph_clock_enable(USART_PERIPH_CLK);//使能外设时钟 +} + +void usart_gpio_config(void) { - // 启用时钟 - rcu_periph_clock_enable(config->rcu_periph_clock); - rcu_periph_clock_enable(config->rcu_gpio_clock); - // 配置GPIO - gpio_af_set(config->gpio_port, GPIO_AF_7, config->tx_pin); - gpio_af_set(config->gpio_port, GPIO_AF_7, config->rx_pin); - gpio_mode_set(config->gpio_port, GPIO_MODE_AF, GPIO_PUPD_NONE, config->tx_pin); - gpio_mode_set(config->gpio_port, GPIO_MODE_AF, GPIO_PUPD_NONE, config->rx_pin); - gpio_output_options_set(config->gpio_port, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, config->tx_pin); - gpio_output_options_set(config->gpio_port, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, config->rx_pin); - + gpio_af_set(USART_GPIO_PORT, USART_GPIO_AF, USART_TX_PIN); + gpio_af_set(USART_GPIO_PORT, USART_GPIO_AF, USART_RX_PIN); + + // gpio_mode_set(USART_GPIO_PORT, USART_GPIO_AF, GPIO_PUPD_PULLUP, USART_TX_PIN | USART_RX_PIN); + gpio_mode_set(USART_GPIO_PORT, USART_GPIO_AF, GPIO_PUPD_NONE, USART_TX_PIN | USART_RX_PIN); + gpio_output_options_set(USART_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, USART_TX_PIN | USART_RX_PIN); // 配置USART - usart_deinit(config->usart_periph); - usart_baudrate_set(config->usart_periph, config->baud_rate); - usart_word_length_set(config->usart_periph, USART_WL_8BIT); - usart_stop_bit_set(config->usart_periph, USART_STB_1BIT); - usart_parity_config(config->usart_periph, USART_PM_NONE); - // usart_hardware_flow_rts_config(config->usart_periph, USART_RTS_DISABLE); - // usart_hardware_flow_cts_config(config->usart_periph, USART_CTS_DISABLE); - usart_receive_config(config->usart_periph, USART_RECEIVE_ENABLE); - usart_transmit_config(config->usart_periph, USART_TRANSMIT_ENABLE); + usart_deinit(USART_PERIPH); + usart_baudrate_set(USART_PERIPH, USART_BAUD_RATE); + + usart_receive_config(USART_PERIPH, USART_RECEIVE_ENABLE); + usart_transmit_config(USART_PERIPH, USART_TRANSMIT_ENABLE); // 启用USART - usart_enable(config->usart_periph); - + usart_enable(USART_PERIPH); + // 配置中断(如果需要) // nvic_irq_enable(config->irq_type, 0, 0); // usart_interrupt_enable(config->usart_periph, USART_INT_RBNE); -} - -// 发送字符 -void gd32_usart_putchar(struct gd32_usart_config *config, char ch) -{ - usart_data_transmit(config->usart_periph, (uint16_t)ch); - while (usart_flag_get(config->usart_periph, USART_FLAG_TBE) == RESET); -} - -// 发送字符串 -void gd32_usart_puts(struct gd32_usart_config *config, const char *str) -{ - while (*str) { - gd32_usart_putchar(config, *str++); - } -} - -void usart_puts(const char *str) -{ - gd32_usart_puts(&usart_config[0], str); } -// 获取串口配置 by name -struct gd32_usart_config *gd32_usart_get_config(const char *name) -{ - for (int i = 0; i < sizeof(usart_config) / sizeof(usart_config[0]); i++) { - if (rt_strcmp(usart_config[i].name, name) == 0) { - return &usart_config[i]; - } - } - return RT_NULL; -} \ No newline at end of file diff --git a/drivers/drv_usart.h b/drivers/drv_usart.h index a7e8693..7ac5c32 100644 --- a/drivers/drv_usart.h +++ b/drivers/drv_usart.h @@ -1,30 +1,28 @@ -#ifndef __DRV_USART_H__ -#define __DRV_USART_H__ +#ifndef DRV_USART_H +#define DRV_USART_H -#include -#include #include "gd32f4xx.h" -#include "gd32f4xx_usart.h" -// 串口配置结构体 -struct gd32_usart_config { - const char *name; - uint32_t usart_periph; - uint32_t rcu_periph_clock; - uint32_t gpio_port; - uint32_t rcu_gpio_clock; - uint32_t tx_pin; - uint32_t rx_pin; - uint32_t baud_rate; - uint8_t irq_type; -}; +#define USART_GPIO_PORT GPIOA +#define USART_GPIO_CLK RCU_GPIOA +#define USART_PERIPH USART0 +#define USART_PERIPH_CLK RCU_USART0 + +#define USART_TX_PIN GPIO_PIN_9 +#define USART_RX_PIN GPIO_PIN_10 + +#define USART_GPIO_AF GPIO_AF_7 +#define USART_IRQn USART0_IRQn +// #define USART_IRQHandler USART0_IRQHandler +// #define USART_IRQHandler_NAME "USART0_IRQHandler" +#define USART_BAUD_RATE 9600 + +void usart_init(void); +void usart_colok_config(void); +void usart_gpio_config(void); +// void usart_putc(struct rt_serial_device *serial, char ch); +// void usart_getc(struct rt_serial_device *serial, char *ch); +// void usart_enable(struct rt_serial_device *serial, rt_bool_t enable); -// 函数声明 -void gd32_usart_init(void); -void gd32_usart_configure(struct gd32_usart_config *config); -void gd32_usart_putchar(struct gd32_usart_config *config, char ch); -void gd32_usart_puts(struct gd32_usart_config *config, const char *str); -struct gd32_usart_config *gd32_usart_get_config(const char *name); - -#endif /* __DRV_USART_H__ */ \ No newline at end of file +#endif \ No newline at end of file