问答

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

stormwind123

TA的家园币:6069  

  • 使用两个定时器输出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闪灯例程没有毛病

  • N32L436RB OPAMP2不工作

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

    BUG N32L4 opamp 寄存器 UG demo

    2024-09-03 10
  • GD32E230作为IIC从机时接收数据会卡顿是什么原因

    在配置完成IIC从机模式后,主机向从机发送9位数据,在从机收到数据后主函数的代码会跑不到,不知道在什么地方造成了阻塞,接收完毕会产生多次的STPDEF中断吗,但是IIC从机模式的故障应该也不会影响到主函数的运行才对,有没有懂的大佬帮忙分析一下谢谢,代码如下#include"gd32e230.h"#defineMSG_RECV_BYTE_SUM9#defineMSG_SEND_BYTE_SUM6#defineI2C0_OWN_ADDRESS70x44voidiic_msg_gpio_config_init(void){/*enableGPIOBclock*/rcu_periph_clock_enable(RCU_GPIOB);/*enableI2C0clock*/rcu_periph_clock_enable(RCU_I2C0);/*connectPB6toI2C0_SCL*/gpio_af_set(GPIOB,GPIO_AF_1,GPIO_PIN_6);/*connectPB7toI2C0_SDA*/gpio_af_set(GPIOB,GPIO_AF_1,GPIO_PIN_7);/*configureGPIOpinsofI2C0*/gpio_mode_set(GPIOB,GPIO_MODE_AF,GPIO_PUPD_PULLUP,GPIO_PIN_6);gpio_output_options_set(GPIOB,GPIO_OTYPE_OD,GPIO_OSPEED_50MHZ,GPIO_PIN_6);gpio_mode_set(GPIOB,GPIO_MODE_AF,GPIO_PUPD_PULLUP,GPIO_PIN_7);gpio_output_options_set(GPIOB,GPIO_OTYPE_OD,GPIO_OSPEED_50MHZ,GPIO_PIN_7);/*I2Cclockconfigure*/i2c_clock_config(I2C0,400000,I2C_DTCY_2);/*I2Caddressconfigure*/i2c_mode_addr_config(I2C0,I2C_I2CMODE_ENABLE,I2C_ADDFORMAT_7BITS,I2C0_OWN_ADDRESS7);/*enableI2C0*/i2c_enable(I2C0);/*enableacknowledge*/i2c_ack_config(I2C0,I2C_ACK_ENABLE);nvic_irq_enable(I2C0_EV_IRQn,23);nvic_irq_enable(I2C0_ER_IRQn,32);/*enabletheI2C0interrupt*/i2c_interrupt_enable(I2C0,I2C_INT_ERR);i2c_interrupt_enable(I2C0,I2C_INT_EV);i2c_interrupt_enable(I2C0,I2C_INT_BUF);}voidi2c0_event_irq_handler(void){if(i2c_interrupt_flag_get(I2C0,I2C_INT_FLAG_ADDSEND)){//0:接收端//1:发送端tI2cSlave.uFlag.Bits.DirState=i2c_flag_get(I2C0,I2C_FLAG_TR);if(tI2cSlave.uFlag.Bits.DirState==RESET){msg_iic_recv

  • 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;}

  • gd32f470 vscode gcc startup_gd32f450_470.s

    gd32f470使用vscode+gcc模式开发的话,适用于gcc的startup_gd32f450_470.s文件哪里可以得到啊?

  • 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
  • GD32F407在使用SPI2时读出flash_id为0XFFFFFF

    请问有遇到这种情况么,怎么处理

  • GD32 i2c Bootloader 操作问题

    目前只能通过i2cBootloader给被升级设备烧录hex文件,选个GD32E232开发板作为串口转i2c设备,连接被升级设备(mcu为GD32E501且是裸片),其他都是按正确操作来的(boot0拉高pf0悬空),在通过AllinOneProgrammer连接i2c时连接不上,提示设备notfound,逻辑分析仪看了看,发送了从地址(0x70)后nack了,这是怎么回事?

    国产芯片 技术交流

    2023-12-25 6
  • 在MAPLAB x IDE中可以改变18F67K22的EEPROM内容吗?如何操作

    我想在仿真的时候不通过程序,使用编译工具改变单片机EEPROM的内容,以前用MAPLAB8的时候好像是可以的,现在的XIDE提示发布版本时禁止使用编辑。不知道怎么样才能编辑EEPROM。

    2023-12-07 2
  • AC781x系列jlink烧录导致Keil卡死的问题有办法解决吗?

    我现在在使用AC7811QBEF的MCU,使用Keil下载的有时能够下载成功,有时候又下载失败。以前下载失败之后我就会使用Jflash,但这次情况很严重,Jflash也会出现卡死的,最后抛出来的错误如下图所示,我想问就没有办法彻底解决这种问题吗?我实在是不想能不能下载成功全看运气了

  • 关于GD32E230C8代替STM32F030C8的问题

    在STM32CubeMX上创建STM32F030C8设置好的程序是否能直接用在GD32E230C8上?

    ST GD 国产芯片

    2023-11-15 11
  • STM32F407 三重ADC采样设置死机问题

    使用STM32F407三重ADC,ADC1ADC2ADC3分别分配8个通道(ADC1把芯片测温等三个内部通道算上),一个24个通道。定时器TIMER3定时触发ADC1采样。ADC采用同步规则模式,DMAMODE1模式传送数据。遇到问题如下:1、按上述配置后,程序直接死机。2、三重ADC,ADC1ADC2ADC3通道数改为每个ADC带1通道可以运行,但ADC采样数据跳动非常大,实际硬件ADC口电压是稳定值。3、ADC1ADC2ADC3通道数改为每个ADC带3通道及以上时出现程序直接死机。有哪位使用过三重ADC遇到类似问题吗?外部采样数据通道要21个通道,除了三重ADC还有别的方式能采样这么多通道吗?

    2023-10-30 9
12下一页