-
STM32中断系统
有米有详细的介绍st单片机的中断系统的文章呢?
2024-11-21 1 -
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 -
GD32F4xxDemo_Suites中的 IAR工程的.icf文件可用ST的代替吗?
GD32F4xxDemo_Suites中的IAR工程的.icf文件在哪里可以找到?可用ST的代替吗?
2024-04-26 19 -
华大HC32L130J8TA,UART1+DMA功能正常,换成UART0就用不了了,什么原因?
本帖最后由breakP于2023-11-210:27编辑直接用的例程,这是UART1+DMA可以正常使用,但是换成UART0就不行了,接线,参数都检查过了int32_tmain(void){//uart端口配置App_UartPortInit();//UART模块配置App_UartCfg();//DMA参数配置App_DmaCfg();while(1){if(5==Dma_GetStat(DmaCh0))//完成一次通道传输(UART1_RX->RAM缓存2字节){Dma_DisableChannel(DmaCh0);//禁用通道0delay10us(100);Dma_EnableChannel(DmaCh1);//使能通道1Dma_ClrStat(DmaCh0);//清除通道0状态值}if(5==Dma_GetStat(DmaCh1))//完成一次通道传输(RAM缓存->UART1_TX2字节){Dma_DisableChannel(DmaCh1);//禁用通道1Dma_EnableChannel(DmaCh0);//使能通道0Dma_ClrStat(DmaCh1);//清除通道0状态值}}}//UART模块配置voidApp_UartCfg(void){stc_uart_cfg_tstcCfg;stc_uart_baud_tstcBaud;DDL_ZERO_STRUCT(stcCfg);//初始化变量DDL_ZERO_STRUCT(stcBaud);//初始化变量Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);//使能UART1外设时钟门控开关stcCfg.enRunMode=UartMskMode1;//模式3stcCfg.enStopBit=UartMsk1bit;//1位停止位stcCfg.stcBaud.u32Baud=9600;//波特率9600stcCfg.stcBaud.enClkDiv=UartMsk8Or16Div;//通道采样分频配置stcCfg.stcBaud.u32Pclk=Sysctrl_GetPClkFreq();//获得外设时钟(PCLK)频率值Uart_Init(M0P_UART1,&stcCfg);//串口初始化Uart_ClrStatus(M0P_UART1,UartRC);//清接收请求Uart_ClrStatus(M0P_UART1,UartTC);//清发送请求Uart_EnableFunc(M0P_UART1,UartDmaTxFunc);//使能DMA发送,DMA相关通道使能后,如果TxBuff为空,会立马启动传输Uart_EnableFunc(M0P_UART1,UartDmaRxFunc);//使能DMA接收}//DMA参数配置voidApp_DmaCfg(void){stc_dma_cfg_tstcDmaCfg;DDL_ZERO_STRUCT(stcDmaCfg);//初始化变量Sysctrl_SetPeripheralGate(SysctrlPeripheralDma,TRUE);//使能DMAC外设时钟门控开关//rxdma配置stcDmaCfg.u32SrcAddres
2023-11-02 9 -
有没人遇到LKS05系列,掉电实验出现程序飞掉的
有没遇到反复掉电存储,实验不到一万次出现程序飞掉的。完全不能读取FLASH了,整个系统瘫痪必须强制擦除后重新写入方可工作。有没什么好的解决方案。
2023-03-22 11 -
J-LINK如何支持GD32
本帖最后由ee230于2022-4-1116:13编辑请教版主,以及各位同道中人:开发一款GD32F303的程序,原先电脑有安装j-link5.12版本,但这个版本不支持GD32.现在就想让j-link支持这款GD32,功能包括j-flash,j-link调试(IAR)。大概有2种方法:1.在j-link5.12版本上打个补丁,支持GD322.更新j-link到最新版本(我看segger官方最新的应该支持)方法1是否有解?使用j-link是否有注意的地方?
2022-04-11 19 -
SH79F1611软件开发是用寄存器还是库函数
有做过这方面的大佬,有加VX交流吗?可以有尝
2022-04-10 12 -
请教兆易FAE关于GD32E505RBT6 SHRTIME占空比丢失问题
我在使用SHRTIME配置互补带死区的PWM时发现在输出PWM存在占空比丢失问题。在官方给的例程中也发现有同样问题。请求技术支持或单片机大牛帮忙分析分析。
2022-03-06 27 -
GD32F150R8T6对应stm32哪个型号
有没有同学把gd32工程迁移到Linux平台,用makefile组织工程。到链接阶段,总是报错,经高人指点可能是makefile或者链接脚本的问题,make脚本应该问题不大,拿别人的工程改的,就改了文件路径而已,把头文件,源文件路径改为自己的,其他的啥都没动。我怀疑是链接脚本问题。想参考相对应的stm32链接脚本
2021-10-04 15 -
华大HC32L136系列单片机 正交编码器有谁用过
最近要使用定时器的正交编码器功能,手册也看过几遍,着手要试一下,却发现不知道该如何操作,请问有谁使用过华大的HC32L136系列的正交编码器功能呢,希望指点一下。另外手册中16.2.7中介绍正交编码器计数功能的时候说MSCR.SMS是用来选择编码器模式的,但是在后面的寄存器介绍中找到了MSCR这个寄存器,但是没有找到相关的位。
2021-10-03 59 -
GD32F305VG timer0输入捕获无反应
各位大佬好!我按照GD32F30x的标准库配置了GD32F305VG的timer0定时器并开启了输入捕获功能,配置代码如下:voidtimer_config(void){/*-----------------------------------------------------------------------timer_parameter_structtimer_initpara;timer_ic_parameter_structtimer_icinitpara;rcu_periph_clock_enable(RCU_TIMER0);timer_deinit(TIMER0);/*NVICconfig*/nvic_irq_enable(TIMER0_UP_TIMER9_IRQn,1,1);nvic_irq_enable(TIMER0_Channel_IRQn,1,0);/*TIMER0configuration*/timer_initpara.prescaler=119;timer_initpara.alignedmode=TIMER_COUNTER_EDGE;timer_initpara.counterdirection=TIMER_COUNTER_UP;timer_initpara.period=999;timer_initpara.clockdivision=TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter=0;timer_init(TIMER0,&timer_initpara);timer_icinitpara.icpolarity=TIMER_IC_POLARITY_RISING;timer_icinitpara.icselection=TIMER_IC_SELECTION_DIRECTTI;timer_icinitpara.icprescaler=TIMER_IC_PSC_DIV1;timer_icinitpara.icfilter=0x0;timer_input_capture_config(TIMER0,TIMER_CH_0,&timer_icinitpara);timer_input_capture_config(TIMER0,TIMER_CH_3,&timer_icinitpara);/*auto-reloadpreloadenable*/timer_auto_reload_shadow_enable(TIMER0);timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_CH0);timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_CH3);timer_interrupt_enable(TIMER0,TIMER_INT_CH0);timer_interrupt_enable(TIMER0,TIMER_INT_CH3);timer_interrupt_enable(TIMER0,TIMER_INT_UP);timer_enable(TIMER0);}/*中断服务程序*/voidTIMER0_UP_TIMER9_IRQHandler(void){if(timer_interrupt_flag_get(TIMER0,TIMER_INT_FLAG_UP)!=RESET){timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_UP);timer0tick++;}}voidTIMER0_Channel_IRQHandler(){if(timer_interrupt
2021-04-25 15 -
STM32串口通信控制电机
我想用串口通信来控制无刷电机,串口代码借用正点原子,目前串口可以接收到发送的指令,但是不能控制电机,希望有前辈帮我解答一下,附上主函数代码intmain(void){u8t;//typedefunsignedcharuint8_t;u8len;u16times=0;//typedefunsignedshortuint16_t;volatileunsignedcharHALL_flag;LED_Init();delay_init();uart2_init(9600);//串口初始化为9600PWM_GPIO_Init();HALL_GPIO_Init();LED1=1;while(1){if(USART_RX_STA&0x8000){len=USART_RX_STA&0x3fff;printf("\r\n您发送的消息为:\r\n");for(t=0;tDR=USART_RX_BUF[t];while((USART2->SR&0X40)==0);}printf("\r\n\r\n");//插入换行USART_RX_STA=0;if(strcmp((char*)USART_RX_BUF,"电机1正转")==0){HALL_flag=1;BLDC_CW();printf("\r\n行走电机正转\r\n");}if(strcmp((char*)USART_RX_BUF,"电机1停止")==0){HALL_flag=0;BLDC_STOP();printf("\r\n行走电机停止\r\n");}}else{times++;if(times%5000==0){printf("\r\nALIENTEKMiniSTM32开发板串口实验\r\n");printf("正点原子@ALIENTEK\r\n\r\n\r\n");}if(times%200==0)printf("请输入数据,以回车键结束\r\n");if(times%30==0)LED1=!LED1;//闪烁LED,提示系统正在运行.delay_ms(10);}}}
2021-04-21 9 -
结构体按位对齐后的赋值
本帖最后由slf123123于2021-4-1909:13编辑typedefunsignedlongDWORD;#pragmapack(push)#pragmapack(1)typedefstructsi{DWORDa:4;DWORDb:7;DWORDc:3;DWORDd:1;DWORDe:3;DWORDf:14;}si;#pragmapack(pop)如上所示这个结构体对齐后是四个字节然后uint8buff[4];怎么将buff赋值给整个结构体structsisu={buff[0],buff[1],buff[2],buff[3]};这样赋值不行吗
2021-04-17 14 -
PIC16LF876A无法编程
主频8Mhz或16Mhz,使用的PCKIT3.5,已排除接线等故障,显示thefollowingmemoryregionsfailedtoprogramcorrectly:programmemoryAddress:00000001expectedvalue0000118areceivedvalue:00000000programmingfailed.请问各位专家,此故障是什么原因所致,如何克服,谢谢!
2021-03-24 12 -
为何GD32E103最新的固件库中CAN相关的都没有了
最近使用GD32E103的can,使用的1.0.0的固件库发现在CAN和CANFD混用的时候相关操作函数有些BUG,然后下载了1.2.0的库发现can相关的东西完全没有了
2021-01-09 4