-
CH582F RF 问题
我想要移植Nimble到CH582上,但是Freertos的例程里面说ble不建议和freertos共存。我想要单独使用不跑循环的RF相关接口,请问有没有相关教程或者方法?
2024-09-02 11 -
GD32F303 SPI DMA 条件下如何配置8位的CRC
如题GD32F303SPIDMA条件下如何配置8位的CRC,我的配置如下voidSpi1_init(){spi_parameter_structspi_init_struct;/*deinitilizeSPIandtheparameters*/spi_i2s_deinit(SPI1);spi_struct_para_init(&spi_init_struct);rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_SPI1);rcu_periph_clock_enable(RCU_AF);/*configureSPI1GPIO:NSS/PB12,SCK/PB13,MISO/PB14,MOSI/PB15*/gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_MAX,GPIO_PIN_13|GPIO_PIN_15);/*SPI1GPIOconfig:SCK/PB13,MOSI/PB15*/gpio_init(GPIOB,GPIO_MODE_IN_FLOATING,GPIO_OSPEED_MAX,GPIO_PIN_14);/*SPI1GPIOconfig:MISO/PB14*/gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_MAX,GPIO_PIN_12);/*PB12asCS*/SPI1_CS_H;spi_init_struct.trans_mode=SPI_TRANSMODE_FULLDUPLEX;spi_init_struct.device_mode=SPI_MASTER;spi_init_struct.frame_size=SPI_FRAMESIZE_8BIT;spi_init_struct.clock_polarity_phase=SPI_CK_PL_LOW_PH_1EDGE;//SPI接口逻辑在时钟极性(CPOL)=0和时钟相位(CPHA)=0的情况下运行spi_init_struct.nss=SPI_NSS_SOFT;//注意SPI_NSS_HARD是指外部的CS也就是说对从机有效主机应该使用SPI_NSS_SOFTspi_init_struct.prescale=SPI_PSC_32;spi_init_struct.endian=SPI_ENDIAN_MSB;//大端spi_init(SPI1,&spi_init_struct);/*setcrcpolynomial*/spi_crc_polynomial_set(SPI1,7);spi_crc_on(SPI1);/*enableSPI1*/spi_enable(SPI1);}我使用了,可是实际上示波器没有监测到下发的正常校验结果spi_crc_polynomial_set(SPI1,7);spi_crc_on(SPI1);发送数据填充{Afex->Spi_Txbuf[0]=Afex->Aevaddr;Afex->Spi_Txbuf[1]=0xFF;//Afex->Spi_Txbuf[2]=CRC8(Afex->Spi_Txbuf,2);AFE1_CS_L;SPI1_TransmitReceiveDma(Afex->Spi_Txbuf,Afex->Afe_Rxbuf,2);AFE1_CS_H;}//DMA数据填充和发送使能等这里用了个信号量阻塞uint8_tSPI1_TransmitReceiveDma(cons
2024-08-08 18 -
沁恒ch32v307无法实现hc-sr04超声波测距,大家帮忙看看
//超声波测距模块==============================================================//system.cu16count=0;voidTIM2_IRQHandler(void)__attribute__((interrupt("WCH-Interrupt-fast")));voidultrasonic_Init(u16arr,u16psc)//初始化{//初始化结构体GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStructure;NVIC_InitTypeDefNVIC_InitStructure;//使能IM2时钟RCC_APB1PeriphClockCmd(ultrasonic_RCC|RCC_APB1Periph_TIM2,ENABLE);//配置GPIO_InitStructure.GPIO_Pin=ultrasonic_Pin;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(ultrasonic_GPIOx,&GPIO_InitStructure);GPIO_ResetBits(ultrasonic_GPIOx,ultrasonic_Pin);GPIO_InitStructure.GPIO_Pin=ultrasonic_Pin_t;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(ultrasonic_GPIOx,&GPIO_InitStructure);GPIO_ResetBits(ultrasonic_GPIOx,ultrasonic_Pin|ultrasonic_Pin_t);TIM_DeInit(TIM2);//定时器周期,实际就是设定自动重载寄存器ARR的值,ARR为要装载到实际自动重载寄存器(即影子寄存器)的值,可设置范围为0至65535。TIM_TimeBaseInitStructure.TIM_Period=arr;//定时器预分频器设置,时钟源经该预分频器才是定时器计数时钟CK_CNT,它设定PSC寄存器的值。//计算公式为:计数器时钟频率(fCK_CNT)等于fCK_PSC/(PSC[15:0]+1),可实现1至65536分频。TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//时钟分频,设置定时器时钟CK_INT频率与死区发生器以及数字滤波器采样时钟频率分频比。可以选择1、2、4分频。TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//设置计数模式,向上计数模式//TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0x00;//设置重复计数器的值,0
2024-06-25 18 -
GD32303CEVAL的SD卡驱动无法再Freertos中正常使用
在粿机中使用sd_block_read/sd_block_write读写正常下图是进入rtos前的粿机程序进入rtos后读写时产生错误,产生两种错误1是SD_CMD_RESP_TIMEOUT,这个错误在写的时候产生,二是SD_COM_CRC_ERROR,这个错误在读的时候产生,rtos中也不是完全无法读写,有小概率可以正常读写在手册中我找到下面内容这是程序检测错误时的依据,是sd卡响应相关的寄存器r1。检测到使用CMD16时产生命令响应超时错误
2024-05-13 19