|
芯片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); } |
请问一下STM32F103C8T6的Hardwar NSS Output ENABLE后cs持续拉低是为什么
STLink下载程序失败,Flash部分地址不能写入
TIM11,TIM13失效
局部变量初始化时未赋值会导致什么后果
在 STM32CubeIDE 中使用 RTOS 代理
如何为ram变量分配固定地址
ST TOF问题请教
使用Hal库的SPI读取磁边传感器导致STM32G4无法运行
为什么STM32H7的DMA第一次启动延时较长?
STM32F407 USB 发送数据 上位机接受不到
微信公众号
手机版
找出异常就等方便定位了。
当然也可以边调试边测量,比如看看前几个字节发送的是否正常。
调试时注意看看两个i的内存分配和数值状况。