|
芯片STM32F407VGT6。 最近做一个单片机的项目,需要使用IO口模拟SPI通信,来给DSP加载数据,数据量较大,程序如下图。 变量 i 在定义后,没有赋初始值,编译器的优化等级是 -(O0),运行时DSP程序加载失败。将编译器的优化等级调整到-(O1)后,DSP加载正常;给变量赋初值 0,编译器的优化等级保持-(O0),DSP加载正常。 请问是什么原因导致的? 即使未赋初值,但是在for循环开始的时候不是也有i = 0吗? 代码如下: static void SPI_Delay_(unsigned int t) { while(t--); } void SPIWriteByte(unsigned int writedat) { unsigned char i; for(i=0;i<32;i++) { LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_2); SPI_Delay_(20); if(writedat & 0x01) LL_GPIO_SetOutputPin(GPIOE, LL_GPIO_PIN_4); else LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_4); writedat>>=1; LL_GPIO_SetOutputPin(GPIOE, LL_GPIO_PIN_2); SPI_Delay_(40); } LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_2); } void load_dsp_program(const unsigned int pData[],unsigned int len) { unsigned int i = 0; LL_GPIO_ResetOutputPin(GPIOE, LL_GPIO_PIN_1); delay_us(20); for(i=0;i<len;i++) { SPIWriteByte(pData); } delay_us(50); LL_GPIO_SetOutputPin(GPIOE, LL_GPIO_PIN_1); } |
STM32F405ZGT6 批次22+ 问下这颗料,60度烘烤12小时后,出现鼓包,是怎么回事? 原厂有标准的烘烤温度范围 跟时长范围吗?
STM32H563的QSPI接口不能读取W25Q256的后128MB数据
STM32C5 HAL SPI CRC 错误无法触发错误回调
非官方开发板第一次下载成功,之后就各种失败
HAL 库建议支持GPIO 同时配置为AF 与外部中断 EXTI
STM32H5F/E 相比 STM32F4 系列最大的优势是什么?
ST TOF问题请教
SPI 发送数据需要等待哪些状态标志位?
STM32F4的SPI端口,如何实现多通道输入?
STM32F4标准库USB例程CDC_HID_Composite问题:第一次识别成功,后续插入电脑均识别失败
微信公众号
手机版
找出异常就等方便定位了。
当然也可以边调试边测量,比如看看前几个字节发送的是否正常。
调试时注意看看两个i的内存分配和数值状况。