问答

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

classroom

TA的家园币:6359  

  • GD32E230 串口1 PA2 PA3无法使用

    GD32E230的datasheet中可以看到PA2和PA3是可以复用到USART1的,然后使用官方的例程,将官方例程默认引进从串口0中的PA9、PA10可以打印。请教一下有没有人知道PA2、PA3怎么当串口1使用?以下是官方例程,我将引脚宏定义改成PA2和PA3,串口0也改为了串口1:usart.h文件#definePrint_GPIO_RCURCU_GPIOA//串口对应GPIO端口的时钟#definePrint_USART_RCURCU_USART1//对应串口号的时钟#definePrint_GPIOGPIOA//串口对应GPIO端口#definePrint_GPIO_AFGPIO_AF_1//串口是GPIO引脚的复用功能1(查询芯片数据手册)#definePrint_TX_PINGPIO_PIN_2//串口对应的GPIO引脚#definePrint_RX_PINGPIO_PIN_3//串口对应的GPIO引脚#definePrint_USARTUSART1//print所使用的串口1usart.c文件//串口打印初始化voidusart_print_init(void){usart_print_gpio_init();usart_print_config();}/*!\briefinitilizethecomGPIO\paramnone\param[out]none\retvalnone*/voidusart_print_gpio_init(void){/*enablePrintGPIOclock*/rcu_periph_clock_enable(Print_GPIO_RCU);/*connectporttoUSARTx_Tx*/gpio_af_set(Print_GPIO,Print_GPIO_AF,Print_TX_PIN);/*connectporttoUSARTx_Rx*/gpio_af_set(Print_GPIO,Print_GPIO_AF,Print_RX_PIN);/*configureUSARTTxasalternatefunctionpush-pull*/gpio_mode_set(Print_GPIO,GPIO_MODE_AF,GPIO_PUPD_PULLUP,Print_TX_PIN);gpio_mode_set(Print_GPIO,GPIO_MODE_AF,GPIO_PUPD_PULLUP,Print_RX_PIN);/*configureUSARTRxasalternatefunctionpush-pull*/gpio_output_options_set(Print_GPIO,GPIO_OTYPE_PP,GPIO_OSPEED_10MHZ,Print_TX_PIN);gpio_output_options_set(Print_GPIO,GPIO_OTYPE_PP,GPIO_OSPEED_10MHZ,Print_RX_PIN);}/*!\briefinitilizetheUSARTconfigurationofthecom\paramnone\param[out]none\retvalnone*/voidusart_print_config(void){/*enableUSARTclock*/rcu_periph_clock_enable(Print_USART_RCU);/*US

    GD32E230 串口 PA 使用 pi

    2024-11-14 8
  • 使用 DMA写flash后,读取数据出现错位现象

    使用DMA写flash后,读取数据出现错位现象,读到的buffer的第一节总为0,从第二字节开始才是正常数据。只能在24bit地址发送完后,再发一个DUMMY_BYTE(无效字节),才能bufferr接收数据。一但调“dma_channel_enable(DMA1,DMA_CH3)这个使能”后就出现上述现象。每次读取数据时都要先发一个DUMMY_BYTE才能正确接收。若上电不调“dma_channel_enable(DMA1,DMA_CH3)“接收都是正常的。使用的MCU是GD32F470VIT6,SPIFLAH是GD25Q40C.请各位大佬帮忙分析下。以下为SPI代码DMA配置voiddma_init(uint8_t*data_buffer,uint32_tdata_length){dma_single_data_parameter_structdma_init_struct;rcu_periph_clock_enable(RCU_DMA1);//DMA发送dma_deinit(DMA1,DMA_CH3);//DMA初始化参数设置dma_init_struct.direction=DMA_MEMORY_TO_PERIPH;dma_init_struct.memory0_addr=(uint32_t)data_buffer;dma_init_struct.memory_inc=DMA_MEMORY_INCREASE_ENABLE;dma_init_struct.periph_addr=(uint32_t)&SPI_DATA(SPI0);dma_init_struct.periph_inc=DMA_PERIPH_INCREASE_DISABLE;dma_init_struct.periph_memory_width=DMA_MEMORY_WIDTH_8BIT;dma_init_struct.number=data_length;dma_init_struct.circular_mode=DMA_CIRCULAR_MODE_DISABLE;dma_init_struct.priority=DMA_PRIORITY_MEDIUM;dma_single_data_mode_init(DMA1,DMA_CH3,&dma_init_struct);dma_channel_subperipheral_select(DMA1,DMA_CH3,DMA_SUBPERI3);//使能DMA中断通道nvic_irq_enable(DMA1_Channel3_IRQn,0,0);//配置DMA中断使能位//dma_circulation_disable(DMA1,DMA_CH3);dma_interrupt_enable(DMA1,DMA_CH3,DMA_CHXCTL_FTFIE);}DMA发送int8_tspi_dma_data_send(uint8_t*pbuffer,uint32_twrite_addr,uint16_tnum_byte_to_write){/*enablethewriteaccesstotheflash*/spi_flash_write_enable();/*selecttheflash:chipselectlow*/SPI_FLASH_CS_LOW();/*send"writetomemory"instructi

    DMA 读取SPI flash 异常 读取

    2024-11-07 15
  • 在用win10+vscode环境中用Jlink烧录gd32程序失败,求思路,谢谢

    出错信息如下:请大家看看有没有思路,谢谢。或者用vscode环境+Jlink烧录GD32的程序,是怎么个步骤烧录的?

  • GD32F303CCT6keil5下载不了程序但是Jlink可以检测到芯片ID

    公司的一个项目画了一块板子因为要适配上位机的原因前前后后调试的半个月,中间因为解压的时候点错了导致在这个项目的文件夹里存在着两套项目文件(GD.后缀和GD_1.后缀),后来有一次因为这个项目进调试后退出会导致keil卡死只能通过任务管理器强行关闭我在网上搜索的教程是删掉uvoptx文件然后重新编译,事情就发生在这个操作之后。后面我发现下不了程序后就把文件恢复了但还是一样报错下载不了,现在的情况就是同一个项目我拷贝到同事电脑上是可以下载的,程序也是可以正常跑起来,但是在我电脑上用keil5和J-Flash都不行然而都可以连接成功和识别芯片ID,更加让我迷惑的是换了另一个项目的同型号芯片的板子是正常的,中间也试过降低速度,J-Flash查看但是都是只有一开始的连接和识别成功后面的在清楚flash阶段就提示报错。这个是和我的接口有关联吗。下面是keil5截图

  • gd32f303cct6有源晶振无法稳定问题

    gd32f303cct6使用16M有源晶振输入到OSCIN引脚后在启动时候HXTALSTB始终无法值1,然后卡死在system_gd32f30x.c文件中iffail的这个死循环里,是这款单片机不支持有源晶振吗,使用示波器测量过芯片OSCIN引脚有峰峰值为1V的16MHZ波形,并且稳定,圆角的方波

  • GD32F470双ADC采集问题

    本帖最后由小炎宇于2024-9-3012:38编辑在使用GD32F470的ADC0和ADC2分别采集数据,并使能DMA传输数据时,发现采集到4个通道的数据,总会有一个通道的数据是0.但每次采集数据为0的通道并不固定,于是放大了DMA存储数据的目标地址缓冲区大小,发现,通道数据为0的位置已经固定且很有规律,不知道是哪里配置的问题,adc初始化时选择的模式是“全部ADC规则并行模式”(因为工程的宏中没有ADC0与ADC2规则并行模式),想请问出现这种情况是否是,把未使能的ADC1的通道数据也算上了,导致每次采集数据,三个通道轮番采集了一遍,还是说数据存储格式有问题,烦请各位大佬帮忙查看一下,下面是初始化代码和采集到的数据的现象。代码:uint16_tga_adc_dmabuf[ADC_SAMPLE_CH_BUTT]={0};//ADC_SAMPLE_CH_BUTT原本为4,现在为6voiddma_config(void){/*ADC_DMA_channelconfiguration*/dma_single_data_parameter_structdma_data_parameter;/*enableDMA1clock*/rcu_periph_clock_enable(RCU_DMA1);dma_deinit(DMA1,DMA_CH0);/*initializeDMAsingledatamode*/dma_data_parameter.periph_addr=(uint32_t)(&ADC_SYNCDATA);dma_data_parameter.periph_inc=DMA_PERIPH_INCREASE_DISABLE;dma_data_parameter.memory0_addr=(uint32_t)ga_adc_dmabuf;dma_data_parameter.memory_inc=DMA_MEMORY_INCREASE_ENABLE;dma_data_parameter.periph_memory_width=DMA_PERIPH_WIDTH_16BIT;dma_data_parameter.circular_mode=DMA_CIRCULAR_MODE_ENABLE;dma_data_parameter.direction=DMA_PERIPH_TO_MEMORY;dma_data_parameter.number=ADC_SAMPLE_CH_BUTT;//现在扩大为6,原本只采集4个dma_data_parameter.priority=DMA_PRIORITY_HIGH;dma_single_data_mode_init(DMA1,DMA_CH0,&dma_data_parameter);/*DMAchannel0peripheralselect*/dma_channel_subperipheral_select(DMA1,DMA_CH0,DMA_SUBPERI0);/*enableDMAchannel*/dma_channel_enable(DMA1,DMA_CH0);}intc

  • 使用两个定时器输出PWM卡死

    请教各位大牛一个问题,卡住我几天了。我使用如下定时器配置PWM,如下示:PA6->PWM0tim1_cha(4)PA7->PWM1tim2_cha(5)PB0->PWM2tim3_ch1b(2)在应行如下初始化代码后,直接卡死了,请问是什么原因呢voidpwm_init(){Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);//端口外设时钟使能TimerPortCfg(PWM0);TimerPortCfg(PWM1);TimerPortCfg(PWM2);Timer1Cfg(100,PWM_DUTY);Bt_M23_EnPWM_Output(TIM1,TRUE,FALSE);//端口输出使能Timer2Cfg(100,PWM_DUTY);Bt_M23_EnPWM_Output(TIM2,TRUE,FALSE);//端口输出使能Timer3Cfg(100,PWM_DUTY);Tim3_M23_EnPWM_Output(TRUE,FALSE);//端口输出使能Bt_M23_Run(TIM2);//运行。Bt_M23_Run(TIM1);//运行。Tim3_M23_Run();//运行。}完整模块代码发下:#include"pwm.h"#include"timer3.h"#include"bt.h"#include"gpio.h"#include"motor.h"volatilecharpwm_duty=95;//PA6->PWM0tim1_cha(4)//PA7->PWM1tim2_cha(5)或tim3_ch0b(4)//PB0->PWM2tim3_ch1b(2)typedefenum{PWM0=0u,PWM1,PWM2,}pwm_index_t;/********************************************************************************中断服务函数******************************************************************************/voidTim1_IRQHandler(void){//Timer1模式23更新中断if(TRUE==Bt_GetIntFlag(TIM1,BtUevIrq)){Bt_M23_CCR_Set(TIM1,BtCCR0A,100-pwm_duty);//设置通道A比较值Bt_ClearIntFlag(TIM1,BtUevIrq);//清中断标志}}voidTim2_IRQHandler(void){//Timer2模式23更新中断if(TRUE==Bt_GetIntFlag(TIM2,BtUevIrq)){Bt_M23_CCR_Set(TIM2,BtCCR0A,100-pwm_duty);//设置通道A比较值Bt_ClearIntFlag(TIM2,BtUevIrq);//清中断标志}}voidTim3_IRQHandler(void){//Timer3模式23更新中断if(TRUE==Tim3_GetIntFlag(Tim3UevIrq)){Tim3_M23_CCR_Set(Tim3CCR1B,100-pwm_duty);//设置CH1通道B比较值Tim3_ClearIntFlag(Tim3UevIrq);/

  • gd32f450 lwip DMA失败

    ErrStatusenet_software_reset(void){uint32_ttimeout=0U;ErrStatusenet_state=ERROR;uint32_tdma_flag;/*resetallcoreinternalregisterslocatedinCLK_TXandCLK_RX*/ENET_DMA_BCTL|=ENET_DMA_BCTL_SWR;/*waitforresetoperationcomplete*/do{dma_flag=(ENET_DMA_BCTL&ENET_DMA_BCTL_SWR);timeout++;}while((RESET!=dma_flag)&&(ENET_DELAY_TO!=timeout));/*resetoperationcomplete*/if(RESET==(ENET_DMA_BCTL&ENET_DMA_BCTL_SWR)){enet_state=SUCCESS;}returnenet_state;}gd32f4xx_enet.c这个老是失败,led闪灯例程没有毛病

  • GD32F407配置USB msc+fatfs文件系统一直显示Windows无法完成格式化

    最近想实现电脑通过USB线读取开发板上SD卡里的数据,使用的芯片是GD32F407ZET6,一开始移植官方例程是可以成功格式化的,但是官方例程通过SRAM进行的,分配的空间只有40k,所以16G的SD卡连接后只显示其中20k,另外20k估计是其他文件,然后我修改了一下,通过fatfs文件系统来读写SD卡,其中挂载包括读写返回的句柄都是正确的,但是用USB线连接电脑时,弹出格式化的窗口,却怎么也无法完成格式化,扇区大小也是按512字节来格式化的,文件系统也是选的FAT32,其中尝试过多次还是无果,请问各位带佬是什么问题呀?

  • Embedded Builder 如何使用j-link 或者 stlink 烧录程序?

    新建的gd32f105vct6芯片工程编译请问如何烧录到芯片?手头没有gd-link?

  • EmbeddedBuilder怎么没有GD32F470?

    EmbeddedBuilder怎么没有GD32F470?下载视频

12下一页