问答

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

probedog

TA的家园币:6086  

  • GD32H757VMT6 在线调试,下载时提示错误:

    我再GD32H757VMT6工程里使用了地址:0x30000000,”__attribute__((section(".ARM.__at_0x30000000")))enet_descriptors_structrxdesc_tab[ENET_RXBUF_NUM];/*!<ENETRxDMA“而且GD32H757VMT6的内部RAM包含0x30000000,请问为什么下载时提示:NoAlgorithmfoundfor:30000000H-3000004FH

  • 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
  • GD32F303RCT6 USART0的空闲中断进不去,仿真打断点也进不去中断

    intmain(void){//¿ÉÒÔ×öµ½´«ÊäÊý¾Ý³öÀ´£¬¶¨µã´«ÊäÊý¾Ý³öÀ´uint32_tStatus2=0;uint32_tStatus3;uint16_tx;dma_parameter_structdma_init_struct2;gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP,ENABLE);//ÏÂÔØ¿ÚNJTRSTÒý½Åµ±×öÆÕͨI/O¿Úrcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1);systick_config();//1mssystickgpio_config();//PA1,PA2,PA3¹Ü½ÅÅäÖÃ/************************************************///UART0_initrcu_periph_clock_enable(RCU_AF);//Need!!!!//usart_halfduplex_enable(USART0);rcu_periph_clock_enable(RCU_USART0);//ʹÄÜUSART0ʱÖÓgpio_pin_remap_config(GPIO_USART0_REMAP,ENABLE);usart_deinit(USART0);//³õʼ»¯//¸´Î»Ê±ÖÓusart_baudrate_set(USART0,19200U);//¶¨Ò岨ÌØÂÊusart_receive_config(USART0,USART_RECEIVE_ENABLE);//½ÓÊÕʹÄÜusart_transmit_config(USART0,USART_TRANSMIT_ENABLE);//·¢ËÍʹÄÜusart_interrupt_enable(USART0,USART_INT_TC);//·¢ËÍÍê³ÉÖжÏusart_interrupt_enable(USART0,USART_INT_IDLE);//¿ÕÏÐÖжÏusart_enable(USART0);//Ä£¿éʹÄÜUSART_INT_TCnvic_irq_enable(USART0_IRQn,0,1);RX0_DMAquest_StartOrInit();TX0_DMAquest_StartOrInit();usart_dma_receive_config(USART0,USART_DENR_ENABLE);usart_dma_transmit_config(USART0,USART_DENT_ENABLE);//NVICEXTI_config();//timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_CH0);//timer_interrupt_enable(TIMER0,TIMER_INT_CH0);//usart_dma_transmit_config(USART0,USART_DENT_ENABLE);//usart_dma_receive_config(USART0,USART_DENR_ENABLE);/******************************************************//*configureDMAmode*///dma_circulation_disable(DMA1,DMA_

  • 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波形,并且稳定,圆角的方波

  • 使用两个定时器输出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,其中尝试过多次还是无果,请问各位带佬是什么问题呀?

  • N32L436RB OPAMP2不工作

    使用官方DEMO依旧不工作,debug看OPAMP2_CS寄存器没有被赋值,请问是什么原因?

    BUG N32L4 opamp 寄存器 UG demo

    2024-09-03 10
  • hc32f460 can导致单片机复位

    can使能后发送数据,如果can总线上没有其他节点接收数据,单片机直接重启。接上接收设备后,单片机正常工作。can配置代码如下//CANConfigstaticvoidApp_CANCfg(void){stc_can_init_tstcCanInit;/*************************ConfigureCAN1***************************/stc_can_filter_config_tastcFilter1[1U]={{0x1UL,0x0000UL,CAN_ID_STD},};/*InitializesCAN.*/(void)CAN_StructInit(&stcCanInit);stcCanInit.stcBitCfg.u32Prescaler=12U;stcCanInit.stcBitCfg.u32TimeSeg1=5U;stcCanInit.stcBitCfg.u32TimeSeg2=3;stcCanInit.stcBitCfg.u32SJW=3;stcCanInit.pstcFilter=astcFilter1;stcCanInit.u16FilterSelect=CAN_FILTER1;stcCanInit.u8WorkMode=CAN_WORK_MD_NORMAL;//CAN_WORK_MD_ELB;stcCanInit.u8PTBSingleShotTx=CAN_PTB_SINGLESHOT_TX_ENABLE;stcCanInit.u8STBSingleShotTx=CAN_STB_SINGLESHOT_TX_ENABLE;stcCanInit.u8STBPrioMode=CAN_STB_PRIO_MD_DISABLE;stcCanInit.u8RxWarnLimit=10U;stcCanInit.u8ErrorWarnLimit=15U;stcCanInit.u8RxAllFrame=CAN_RX_ALL_FRAME_DISABLE;stcCanInit.u8RxOvfMode=CAN_RX_OVF_DISCARD_NEW;stcCanInit.u8SelfAck=CAN_SELF_ACK_DISABLE;/*EnableperipheralclockofCAN.*/FCG_Fcg1PeriphClockCmd(FCG1_PERIPH_CAN,ENABLE);(void)CAN_Init(CM_CAN,&stcCanInit);CAN_ExitLocalReset(CM_CAN);/*Enabletheinterrupts,thestatusflagscanberead.*/CAN_IntCmd(CM_CAN,CAN_INT_ALL,DISABLE);CAN_IntCmd(CM_CAN,CAN_INT_ERR_INT|CAN_INT_RX_BUF_WARN|CAN_INT_RX|CAN_INT_BUS_ERR,ENABLE);}

  • GD32H737 SPI datasize = 16 bit时无法收发

    这段代码执行的是SPI收发功能,使用仿真器debug时会停在spi_i2s_data_receive处(等待接收标志位),但是如果把datasize改成8bit就能正常收发数据,请问是什么原因呢?uint32_tSpi_Transfer16(SPI_BusDef*spi,uint16_t*TxBuf,uint16_t*RxBuf,uint16_tlen){uint32_tret=0;Spi_Nss(spi->Nss,0);spi_master_transfer_start(spi->Periph,SPI_TRANS_START);for(inti=0;iPeriph)&SPI_FLAG_TP));spi_i2s_data_transmit(spi->Periph,TxBuf);RxBuf=spi_i2s_data_receive(spi->Periph);}while(RESET==spi_i2s_flag_get(spi->Periph,SPI_FLAG_TC));Spi_Nss(spi->Nss,1);returnret;}

  • GD的Embedded Builder环境添加不了Jlink调试器

  • GD32为什么用PA2代替key按键功能不成功

    配置PA4ADC引脚,将PA2代替key功能,一脚接地一脚接PA2,想实现在另一key按键控制oled屏同时(使用了PA1),如果杜邦线连接了地与PA2,可以在oled屏幕上显示读取的ADC值程序如下运行无误但是PA2连接时无法实现预期功能,PA1正常运行请大佬解答~谢谢#include"gd32f30x.h"#include"systick.h"#include#include"oled.h"externuint8_tIntFlag;//进入中断服务程序标志,在EXTI1_IRQHandler()函数置位//定义一个变量来跟踪当前显示的行staticuint8_tcurrentLine=0;//定义一个数组来存储要显示的信息的索引或字符串指针staticconstuint8_tchineseMessages[][2]={{12,0},//{30,1},//{48,2},//{66,3},//{84,4},//{102,5}//};staticuint8_t*englishMessages[]={"HUZHOU","TEL:12345678"};uint16_tadc_value;uint16_tVol_Value;floatVol_Value1;voidadc_config(void){/*resetADC*/adc_deinit(ADC1);///*ADCmodeconfig*/adc_mode_config(ADC_MODE_FREE);/*ADCcontinousfunctionenable*/adc_special_function_config(ADC1,ADC_CONTINUOUS_MODE,ENABLE);/*ADCdataalignmentconfig*/adc_data_alignment_config(ADC1,ADC_DATAALIGN_RIGHT);/*ADCresolusion6B*///adc_resolution_config(ADC1,ADC_RESOLUTION_6B);/*ADCchannellengthconfig*/adc_channel_length_config(ADC1,ADC_REGULAR_CHANNEL,1);/*ADCregularchannelconfig*/adc_regular_channel_config(ADC1,0,ADC_CHANNEL_4,ADC_SAMPLETIME_55POINT5);/*ADCtriggerconfig*/adc_external_trigger_source_config(ADC1,ADC_REGULAR_CHANNEL,ADC0_1_2_EXTTRIG_REGULAR_NONE);adc_external_trigger_config(ADC1,ADC_REGULAR_CHANNEL,ENABLE);/*enableADCinterface*/adc_enable(ADC1);delay_1ms(1);/*ADCcalibrationandresetcalibration*/adc_calibration_enable(ADC1);/*enableADCinterface*///adc_software_trigger_enable(ADC0,ADC_REGULAR_CHANNEL);}intmain(void){rcu_ahb_clock_config(R

    AD PA 成功 GD32F303RCT6 GD32

    2024-07-25 18
12下一页