|
芯片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[i]); } delay_us(50); LL_GPIO_SetOutputPin(GPIOE, LL_GPIO_PIN_1); } |
局部变量初始化时未赋值会导致什么后果
在 STM32CubeIDE 中使用 RTOS 代理
如何为ram变量分配固定地址
ST TOF问题请教
使用Hal库的SPI读取磁边传感器导致STM32G4无法运行
为什么STM32H7的DMA第一次启动延时较长?
STM32F407 USB 发送数据 上位机接受不到
请问我的CubeMX为什么初始界面没有ai选项,进去之后也没有addnetwork?
ST Motor Control Workbench卡在如图界面,生成不了代码
SDIO 标致位 没有变
微信公众号
手机版