|
芯片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); } |
ST TOF问题请教
SPI 发送数据需要等待哪些状态标志位?
STM32F4的SPI端口,如何实现多通道输入?
STM32F4标准库USB例程CDC_HID_Composite问题:第一次识别成功,后续插入电脑均识别失败
关于l9663的SPI通信问题
STM32F407 Flash 故障
STM32F407使用LAN8720A进行网口通信
USBX在F407上创建CDC不能正常使用
STM32F407 音频输入输出时 IFFT 无法正常工作
ai部署
微信公众号
手机版
找出异常就等方便定位了。
当然也可以边调试边测量,比如看看前几个字节发送的是否正常。
调试时注意看看两个i的内存分配和数值状况。