接收3个字节时 就进入硬件错误了, HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET); HAL_SPI_Transmit(&SPI_Handler2,&txbuf,3,1000); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET); HAL_Delay(1); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET); HAL_SPI_TransmitReceive (&SPI_Handler2,&txbuf,recvbuf,3,100); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET); 每次走到 HAL_SPI_TransmitReceive ( )就死机了 有啥办法修复? |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
txbuf,recvbuf,这两个都是怎么定义的?
如果都是数组的话,那么传的参数应该都是数组名或数组元素0的地址。
“HAL_SPI_TransmitReceive (&SPI_Handler2,&txbuf,recvbuf,3,100); ”
你在,这条中使用&txbuf,应该是错误的。除非你的txbuf是一个变量,但是变量的话,发送3个长度那显然也不对。
找到问题所在了,
我不确定这个错误和编译器有没有关系,我用的编译器是GCC
由于声明的发送或者接受缓存数组没有4字节对齐,所以在访问时出错了,
下面是HAL库中的部分代码,我觉得可能是忘了改8位模式的代码了
这是16位收发的代码
下面是8位模式的处理代码
自己修改库文件我怕改出BUG,所以简单的解决办法是
给发送和接收数组前加上字节对齐声明
__ALIGN_END char RecvRDAC_buf[6];
这样接收数据的时候就运行正常了