问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG
  • GD32H7XX的USB-host例程求助 sos

    在看GD32H7xx的usb官方demo(GD32H7xx_Firmware_Library_V1.4.0\Examples\USBHS\usb_host\usb_host_hid_keyboard_mouse),发现个问题,想请教各位大佬,以下是代码 主进程入口 [font=Comic Sans MS]usbh_host usb_host_hid;[/font] [font=Comic Sans MS]usb_core_driver hid_host_core; [/font] [font=Comic Sans MS]int main(void)[/font] [font=Comic Sans MS]{[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] usb_core_driver *idev = (usb_core_driver *)usb_host_hid.data;[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] cache_enable();[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#ifdef USE_ULPI_PHY[/font] [font=Comic Sans MS] usb_gpio_config();[/font] [font=Comic Sans MS]#endif /* USE_ULPI_PHY */[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] usb_rcu_config();[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] usb_timer_init();[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] /* configure GPIO pin used for switching VBUS power and charge pump I/O */[/font] [font=Comic Sans MS] usb_vbus_config();[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] /* register device class */[/font] [font=Comic Sans MS] usbh_class_register(&usb_host_hid, &usbh_hid);[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#ifdef USE_USBHS0[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#ifdef USE_USB_FS[/font] [font=Comic Sans MS] usb_para_init(&hid_host_core, USBHS0, USB_SPEED_FULL);[/font] [font=Comic Sans MS]#endif[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#ifdef USE_USB_HS[/font] [font=Comic Sans MS] usb_para_init(&hid_host_core, USBHS0, USB_SPEED_HIGH);[/font] [font=Comic Sans MS]#endif[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#endif /* USE_USBHS0 */[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#ifdef USE_USBHS1[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#ifdef USE_USB_FS[/font] [font=Comic Sans MS] usb_para_init(&hid_host_core, USBHS1, USB_SPEED_FULL);[/font] [font=Comic Sans MS]#endif[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#ifdef USE_USB_HS[/font] [font=Comic Sans MS] usb_para_init(&hid_host_core, USBHS1, USB_SPEED_HIGH);[/font] [font=Comic Sans MS]#endif[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#endif /* USE_USBHS1 */[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] usb_core_driver *udev = (usb_core_driver *)usb_host_hid.data;[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] [b][u]usbh_init(&usb_host_hid, &hid_host_core, &usr_cb);[/u][/b][/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS]#ifdef USE_USB_HS[/font] [font=Comic Sans MS] #ifndef USE_ULPI_PHY[/font] [font=Comic Sans MS] #ifdef USE_USBHS0[/font] [font=Comic Sans MS] pllusb_rcu_config(USBHS0);[/font] [font=Comic Sans MS] #elif defined USE_USBHS1[/font] [font=Comic Sans MS] pllusb_rcu_config(USBHS1);[/font] [font=Comic Sans MS] #else[/font] [font=Comic Sans MS] #endif[/font] [font=Comic Sans MS] #endif /* !USE_ULPI_PHY */[/font] [font=Comic Sans MS]#endif /* USE_USB_HS */[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] usb_intr_config();[/font] [font=Comic Sans MS] [/font] [font=Comic Sans MS] while(1) {[/font] [font=Comic Sans MS] usbh_core_task(&usb_host_hid);[/font] [font=Comic Sans MS] }[/font] [font=Comic Sans MS]}[/font] [font=Comic Sans MS]↓ [/font]进入[b][font=Comic Sans MS][u]usbh_init[/u][/font][/b] [font=Comic Sans MS]/*! \brief USB host stack initializations \param[in] uhost: pointer to USB host \param[in] udev: pointer to USB core instance \param[in] user_cb: pointer to user callback \param[out] none \retval none */ void usbh_init(usbh_host *uhost, usb_core_driver *udev, usbh_user_cb *user_cb) { /* host de-initializations */ [b][u]usbh_deinit(uhost);[/u][/b] uhost->usr_cb = user_cb; udev->host.connect_status = 0U; for(uint8_t i = 0U; i < USBHS_MAX_TX_FIFOS; i++) { udev->host.pipe[i].err_count = 0U; udev->host.pipe[i].pp_status = PIPE_IDLE; udev->host.backup_xfercount[i] = 0U; } udev->host.pipe[0].ep.mps = 8U; usb_basic_init(&udev->bp, &udev->regs); #ifndef DUAL_ROLE_MODE_ENABLED usb_globalint_disable(&udev->regs); usb_core_init(udev->bp, &udev->regs); #ifndef USE_OTG_MODE usb_curmode_set(&udev->regs, HOST_MODE); #endif /* USE_OTG_MODE */ usb_host_init(udev); usb_globalint_enable(&udev->regs); #endif /* DUAL_ROLE_MODE_ENABLED */ /* link driver to the stack */ udev->host.data = (void *)uhost; uhost->data = (void *)udev; /* upon initialize call USR call back */ uhost->usr_cb->dev_init(); } ↓ 进入[b][u]usbh_deinit[/u][/b] [/font][font=Comic Sans MS] /*! \brief de-initialize USB host \param[in] uhost: pointer to USB host \param[out] none \retval operation status */ usbh_status usbh_deinit(usbh_host *uhost) { [b]usb_core_driver *udev = (usb_core_driver *)uhost->data;[/b] if (NULL == udev) { printf("NULL!"); } /* software initialize */ uhost->cur_state = HOST_DEFAULT; uhost->backup_state = HOST_DEFAULT; uhost->enum_state = ENUM_DEFAULT; uhost->control.ctl_state = CTL_IDLE; uhost->control.max_len = USB_FS_EP0_MAX_LEN; uhost->dev_prop.addr = USBH_DEV_ADDR_DEFAULT; uhost->dev_prop.speed = PORT_SPEED_FULL; uhost->dev_prop.cur_itf = 0xFFU; [b][u]usbh_pipe_free(udev, uhost->control.pipe_in_num);[/u][/b] usbh_pipe_free(udev, uhost->control.pipe_out_num); return USBH_OK; } ↓ 进入[b][u]usbh_pipe_free[/u][/b] uint8_t usbh_pipe_free(usb_core_driver *udev, uint8_t pp_num) { if(pp_num < HP_MAX) { [b]udev->host.pipe[3].in_used = 0U;[/b] } return USBH_OK; } 从usbh_deinit函数中可以看出udev是一个空指针,下面我加的判空验证也进去了,执行到usbh_pipe_free函数中udev->host.pipe[3].in_used = 0U;这一句时,对空指针解引用,这一句应该有问题吧?可是在我裸机运行此demo时却正常运行,没有异常。然而当移植到项目中时,项目运行的是RT-Thread,走到这一句直接报错hard fault。芯片是GD32H759IMK,想在此问问前辈大佬们,这是什么原因,感激不尽! [/font]

    usb-host ev GD32H7 xx

    213浏览量 0回复量 关注量
  • GD32H7 QSPI

    [color=#333333][backcolor=rgb(255, 255, 255)][font="]想请问一下,我在使用GD32H7开发时:[/font][/backcolor][/color] [color=#333333][backcolor=rgb(255, 255, 255)][font="]1. 使用SPI3当做QSPI[/font][/backcolor][/color] [color=#333333][backcolor=rgb(255, 255, 255)][font="]2. DZ设定为 8bit[/font][/backcolor][/color] [color=#333333][backcolor=rgb(255, 255, 255)][font="]3. BYTEN=1, WORDEN=0[/font][/backcolor][/color] [color=#333333][backcolor=rgb(255, 255, 255)][font="]使用上述条件,发送一个 byte 数据,BUS 上打出 2 个bytes,且发送的数据相同[/font][/backcolor][/color] [color=#333333][backcolor=rgb(255, 255, 255)][font="]这个异常是因为哪里没配置好吗 [/font][/backcolor][/color]

    spi 开发 TE 使用 GD32H7 发送

    382浏览量 2回复量 关注量
  • uC/OS-III版本为3.04.05,支不支持GD32H7系列 sos

    原本项目使用GD32F450,uC/OS-III版本为3.04.05;现在需要把芯片更换GD32H7系列,操作系统支不支持了;还是说必须要用最新的uC/OS-III。

    嵌入式 技术交流 国产芯片 uC/OS-III GD32H7 版本

    1447浏览量 0回复量 关注量
  • GD32 Embedded Builder如何支持GD32H7系列MCU软件开发

    GD32 Embedded Builder现在还不支持GD32H7系列MCU软件开发?如何支持GD32H7系列MCU软件开发,

    GD32 MCU 软件开发 GD32H7 Embedded builder

    2693浏览量 3回复量 关注量
  • gd32h7+netxduo sos

    基于 官方提供的关于gd32f4移植netxduo 的底层驱动来 移植gd32h7 目前的移植情况呢 是 开Cache 网络不通 ping不通 不开Cache的情况下 网络是能够ping通的 mpu 配置 mpu_init_struct.region_base_address = 0x30000000; mpu_init_struct.region_size = MPU_REGION_SIZE_32KB; mpu_init_struct.access_permission = MPU_AP_FULL_ACCESS; mpu_init_struct.access_bufferable = MPU_ACCESS_BUFFERABLE; mpu_init_struct.access_cacheable = MPU_ACCESS_NON_CACHEABLE; mpu_init_struct.access_shareable = MPU_ACCESS_NON_SHAREABLE; mpu_init_struct.region_number = MPU_REGION_NUMBER1; mpu_init_struct.subregion_disable = MPU_SUBREGION_ENABLE; mpu_init_struct.instruction_exec = MPU_INSTRUCTION_EXEC_PERMIT; mpu_init_struct.tex_type = MPU_TEX_TYPE0; if defined (__CC_ARM) /*!< ARM compiler */ __attribute__((section (".RAM_D2"))) enet_descriptors_struct rxdesc_tab[ENET_RXBUF_NUM]; /*!< ENET RxDMA descriptor */ __attribute__((section (".RAM_D2"))) enet_descriptors_struct txdesc_tab[ENET_TXBUF_NUM]; /*!< ENET TxDMA descriptor */ __attribute__((section (".RAM_D2"))) uint8_t rx_buff[ENET_RXBUF_NUM][ENET_RXBUF_SIZE]; /*!< ENET receive buffer */ __attribute__((section (".RAM_D2"))) uint8_t tx_buff[ENET_TXBUF_NUM][ENET_TXBUF_SIZE]; /*!< ENET transmit buffer */ RAM_D2地址划分如下: ; RW data - SRAM0(0x30000000) + SRAM1(0x30004000) 16 + 16 = 32kb RW_IRAM4 0x30000000 0x00008000 { *(.RAM_D2) }

    国产芯片 技术交流 嵌入式 GD32H7 NetXDuo MPU

    2224浏览量 0回复量 关注量
  • GD32H759关于CAN-FD帧配置邮箱过滤器的问题

    请问大佬们在使用GD32H759芯片配置CAN FD时,如何正确配置邮箱过滤器呢?手册上说使用FD帧就无法使用接收FIFO进行过滤。

    GD32 CAN 嵌入式 CAN-FD 过滤器 GD32H7

    3112浏览量 8回复量 关注量
  • GD32H7系列现在正常卖了么 sos

    货量多不多

    GD3 GD32H7 GD32

    1350浏览量 0回复量 关注量
  • 有没有GD32H7 的 RGB 接口LVGL 例子,更新屏幕太折腾

    前端时间在调试 GD32H7 ,可是发现使用TLI 时 还是存在问题,调了很久最后放弃了 由于H7 的架构 有多种内存块, 使用不当就存在问题 开始使用外部RAM存放显存, 一直没成功, 后来没办法使用内部RAM 单显存测试,还是不行,屏幕显示经常有马赛克, 感觉这个TLI 配置起来太麻烦了 有TLI 有2个图层 , 使用的时候 即使用一个图层 ,2个图层还是必须要都要配置,不配置还不行 因为2个图层后面有个混合 更新输出的时候 也比较扯。 在使用LVGL 时,使用单格全屏显示缓存,我配置了TLI 的2个图层,仅使用1个图层输出, 然后再输出时使用 [color=#dadada][backcolor=#1e1e1e][font=Consolas,][color=#dcdcaa]tli_reload_config[/color][color=#b4b4b4]([/color][color=#dadada]TLI_FRAME_BLANK_RELOAD_EN[/color][color=#b4b4b4]);[/color] [/font][/backcolor][/color] 来触发TLI更新输出,但是有问题,无法显示, 这就很扯,首先也不知道什么时候更新完成?然后调用这个没有效果 有没有H7 的LGVL的例子学习一下?

    使用 更新 接口 LVGL RGB GD32H7

    3820浏览量 15回复量 关注量
  • 请教下GD32H7系列的外部SRAM读写 EXMC初始化问题 赏300家园币

    EXMC初始化之后,对外部SRAM的操作没有效果,以下是代码部分(nor_region传的是EXMC_BANK0_NORSRAM_REGION0)。 请大佬们看看是什么问题。 void exmc_norflash_init(uint32_t nor_region) { exmc_norsram_parameter_struct nor_init_struct; exmc_norsram_timing_parameter_struct nor_timing_init_struct; gpio_deinit(GPIOB); gpio_deinit(GPIOD); gpio_deinit(GPIOE); gpio_deinit(GPIOF); gpio_deinit(GPIOG); exmc_norsram_deinit(nor_region); /* EXMC clock enable */ rcu_periph_clock_enable(RCU_EXMC); /* GPIO clock enable */ rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_GPIOD); rcu_periph_clock_enable(RCU_GPIOE); rcu_periph_clock_enable(RCU_GPIOF); rcu_periph_clock_enable(RCU_GPIOG); /* configure GPIO D[0-15] */ gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15); gpio_af_set(GPIOE, GPIO_AF_12, GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); gpio_mode_set(GPIOE, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); /* configure GPIO A[0-23] */ gpio_af_set(GPIOF, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); gpio_mode_set(GPIOF, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); gpio_af_set(GPIOG, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5); gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5); gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5); gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13); gpio_af_set(GPIOE, GPIO_AF_12, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6); gpio_mode_set(GPIOE, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6); gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6); /* configure NOE NWE */ gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_4 | GPIO_PIN_5); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_4 | GPIO_PIN_5); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_4 | GPIO_PIN_5); /* configure NBL0-1 */ gpio_af_set(GPIOE, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1); gpio_mode_set(GPIOE, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1); gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_0 | GPIO_PIN_1); /* configure EXMC NE0*/ gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_7); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_7); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_7); /* configure CLK and NWAIT */ gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_3 | GPIO_PIN_6); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_3 | GPIO_PIN_6); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_3 | GPIO_PIN_6); exmc_norsram_struct_para_init(&nor_init_struct); nor_timing_init_struct.asyn_access_mode = EXMC_ACCESS_MODE_A; nor_timing_init_struct.syn_data_latency = EXMC_DATALAT_6_CLK; nor_timing_init_struct.syn_clk_division = EXMC_SYN_CLOCK_RATIO_6_CLK; nor_timing_init_struct.bus_latency = 5; nor_timing_init_struct.asyn_data_setuptime = 80; nor_timing_init_struct.asyn_address_holdtime = 10; nor_timing_init_struct.asyn_address_setuptime = 10; /* configure EXMC bus parameters */ nor_init_struct.norsram_region = nor_region; nor_init_struct.address_data_mux = DISABLE; nor_init_struct.memory_type = EXMC_MEMORY_TYPE_SRAM; nor_init_struct.databus_width = EXMC_NOR_DATABUS_WIDTH_16B; nor_init_struct.burst_mode = DISABLE; nor_init_struct.nwait_polarity = EXMC_NWAIT_POLARITY_LOW; nor_init_struct.nwait_config = EXMC_NWAIT_CONFIG_BEFORE; nor_init_struct.memory_write = ENABLE; nor_init_struct.nwait_signal = DISABLE; nor_init_struct.extended_mode = DISABLE; nor_init_struct.asyn_wait = DISABLE; nor_init_struct.write_mode = EXMC_ASYN_WRITE; nor_init_struct.cram_page_size = EXMC_CRAM_AUTO_SPLIT; nor_init_struct.read_write_timing = &nor_timing_init_struct; nor_init_struct.write_timing = &nor_timing_init_struct; exmc_norsram_init(&nor_init_struct); exmc_norsram_enable(nor_region); }

    SRAM 读写 EXMC GD32H7 国产芯片 MUC

    8925浏览量 18回复量 关注量
  • 关于GD32H757 ADC定时器触发+DMA 配置后DMA的数据不更新 sos

    void ADC_rcu_config(void) { /* enable GPIO clock */ rcu_periph_clock_enable(RCU_GPIOA); /* enable ADC clock */ rcu_periph_clock_enable(RCU_ADC0); /* enable DMA clock */ rcu_periph_clock_enable(RCU_DMA0); rcu_periph_clock_enable(RCU_DMAMUX); /* enable trigsel clock */ rcu_periph_clock_enable(RCU_TRIGSEL); /* enable timer1 clock */ rcu_periph_clock_enable(RCU_TIMER1); rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL4); } /*! \brief configure the GPIO peripheral \param[in] none \param[out] none \retval none */ void ADC_GPIO_Config(void) { /* config the GPIO as analog mode */ /* */ gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, AirPress_PIN | IExpValve_PIN); } /*! \brief configure the TIMER peripheral \param[in] none \param[out] none \retval none */ void timer_config(void) { timer_oc_parameter_struct timer_ocintpara; timer_parameter_struct timer_initpara; /* enable trigsel clock */ rcu_periph_clock_enable(RCU_TRIGSEL); /* enable timer1 clock */ rcu_periph_clock_enable(RCU_TIMER1); rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL4); /* TIMER1 configuration */ timer_initpara.prescaler = 300-1; timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.period = 500-1; timer_initpara.clockdivision = TIMER_CKDIV_DIV1; timer_initpara.repetitioncounter = 0; timer_init(TIMER1, &timer_initpara); /* CH0 configuration in PWM mode1 */ timer_ocintpara.ocpolarity = TIMER_OC_POLARITY_HIGH; timer_ocintpara.outputstate = TIMER_CCX_ENABLE; timer_channel_output_config(TIMER1, TIMER_CH_1, &timer_ocintpara); timer_channel_output_pulse_value_config(TIMER1, TIMER_CH_1, 100); timer_channel_output_mode_config(TIMER1, TIMER_CH_1, TIMER_OC_MODE_PWM1); timer_channel_output_shadow_config(TIMER1, TIMER_CH_1, TIMER_OC_SHADOW_DISABLE); } /*! \brief configure the DMA peripheral \param[in] none \param[out] none \retval none */ void ADC_DMA_Config(void) { /* ADC_DMA_channel configuration */ dma_single_data_parameter_struct dma_single_data_parameter; /* ADC DMA_channel configuration */ dma_deinit(DMA0, DMA_CH0); /* initialize DMA single data mode */ dma_single_data_parameter.request = DMA_REQUEST_ADC0; dma_single_data_parameter.periph_addr = (uint32_t)(&ADC_RDATA(ADC0)); dma_single_data_parameter.periph_inc = DMA_PERIPH_INCREASE_DISABLE; dma_single_data_parameter.memory0_addr = (uint32_t)(&adc_value); dma_single_data_parameter.memory_inc = DMA_MEMORY_INCREASE_ENABLE; dma_single_data_parameter.periph_memory_width = DMA_PERIPH_WIDTH_32BIT; dma_single_data_parameter.direction = DMA_PERIPH_TO_MEMORY; dma_single_data_parameter.number = 2; dma_single_data_parameter.priority = DMA_PRIORITY_HIGH; dma_single_data_mode_init(DMA0, DMA_CH0, &dma_single_data_parameter); /* enable DMA circulation mode 循环模式*/ dma_circulation_enable(DMA0, DMA_CH0); /* enable DMA channel */ dma_channel_enable(DMA0, DMA_CH0); } /*! \brief configure the ADC peripheral \param[in] none \param[out] none \retval none */ void ADC_Config(void) { /* reset ADC */ adc_deinit(ADC0); /* ADC clock config */ adc_clock_config(ADC0, ADC_CLK_SYNC_HCLK_DIV6); /* ADC contineous function enable */ adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, DISABLE); /* ADC scan mode enable */ adc_special_function_config(ADC0, ADC_SCAN_MODE, ENABLE); /* ADC resolution config */ adc_resolution_config(ADC0, ADC_RESOLUTION_14B); /* ADC data alignment config */ adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT); /* ADC channel length config */ adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 2); /* ADC regular channel config */ adc_regular_channel_config(ADC0, 0, ADC_CHANNEL_15, 240); adc_regular_channel_config(ADC0, 1, ADC_CHANNEL_14, 240); /* ADC trigger config */ adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, EXTERNAL_TRIGGER_RISING); /* clear the ADC flag */ adc_interrupt_flag_clear(ADC0, ADC_INT_FLAG_EOC); adc_interrupt_flag_clear(ADC0, ADC_INT_FLAG_EOIC); /* ADC DMA function enable */ adc_dma_request_after_last_enable(ADC0); adc_dma_mode_enable(ADC0); /* enable ADC interface */ adc_enable(ADC0); /* wait for ADC stability */ LCD_delay_ms(1); /* ADC calibration mode config */ adc_calibration_mode_config(ADC0, ADC_CALIBRATION_OFFSET_MISMATCH); /* ADC calibration number config */ adc_calibration_number(ADC0, ADC_CALIBRATION_NUM1); /* ADC calibration and reset calibration */ adc_calibration_enable(ADC0); } /*! \brief configure the TRIGSEL peripheral \param[in] none \param[out] none \retval none */ void trigsel_config(void) { trigsel_init(TRIGSEL_OUTPUT_ADC0_INSTRG, TRIGSEL_INPUT_TIMER1_CH1); } /** \brief configure the nested vectored interrupt controller \param[in] none \param[out] none \retval none */ void nvic_config(void) { nvic_irq_enable(ADC0_1_IRQn, 10, 0); } void BSP_ADC_Init(void) { ADC_rcu_config(); ADC_GPIO_Config(); timer_config(); trigsel_config(); // nvic_config(); ADC_DMA_Config(); ADC_Config(); timer_enable(TIMER1); } 配置完后 ,数组里没有数据 ,当时测试时也打开过中断,但中断没有触发,请坛友帮忙看看

    TI ADC 定时器触发 GD32H7 DMA 更新

    1434浏览量 0回复量 关注量
  • GD32H7移植FatFs读写SD卡,电脑上看不到文件

    通过H7往SD卡写入txt文件,使用读卡器在电脑上看不到该文件,但是在H7上始终可以读取文件,并且也可以查看文件信息;同理,在电脑上创建的文件,在H7上也无法搜索和查看到。不知道是什么原因。

    移植 读写 GD32H7 FATFS GD32

    1797浏览量 1回复量 关注量
  • GD32H759IMT6和GD32H759IMT7有啥区别?

    GD32H759IMT6和GD32H759IMT7有啥区别?datasheet上管脚,封装一样的!

    管脚 封装 sheet datasheet GD32H7 mt

    2715浏览量 1回复量 关注量