OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3299|回复: 6

STM32H743开发板关于QSPI实验的问题

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-8-20
在线时间
9 小时
发表于 2019-8-30 17:03:58 | 显示全部楼层 |阅读模式
5金钱
代码问题如下:
主要目的是串口随便发个数当做功能开关。 a.png 等接受到之后,QSPI将字符串TEXT_BUFFER[]写入FLASH中,然后读取出来打印,并且再通过串口发送一遍。
代码只改动了main函数的部分,如下所示,串口截图在后面,不知道是什么问题,请教一下。
//要写入到W25Q16的字符串数组
const u8 TEXT_Buffer[]={"Apollo STM32H7 QSPI TEST"};
#define SIZE sizeof(TEXT_Buffer)
       
int main(void)
{
    u8 key;
        u8 i=0;
        u8 datatemp[SIZE];
        u32 flash_size;
       
        Cache_Enable();                                        //打开L1-Cache
        HAL_Init();                                                        //初始化HAL库
        Stm32_Clock_Init(160,5,2,4);                      //设置时钟,400Mhz
        delay_init(400);                                                //延时初始化
        uart_init(115200);                                                //串口初始化
        //usmart_dev.init(200);                                     //初始化USMART       
        LED_Init();                                                                //初始化LED
        KEY_Init();                                                                //初始化按键
        SDRAM_Init();                                   //初始化SDRAM
        LCD_Init();                                                                //初始化LCD
       
        W25QXX_Init();                                            //初始化W25QXX
          POINT_COLOR=RED;
        //LCD_ShowString(30,50,200,16,16,"Apollo STM32H7");

        //LCD_ShowString(30,70,200,16,16,"QSPI TEST");       
        //LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        //LCD_ShowString(30,110,200,16,16,"2016/7/12");                        
        //LCD_ShowString(30,130,200,16,16,"KEY1:Write  KEY0:Read");        //显示提示信息               
        while(W25QXX_ReadID()!=W25Q256)                                                                //检测不到W25Q256
        {
                LCD_ShowString(30,150,200,16,16,"QSPI Check Failed!");
                delay_ms(500);
                LCD_ShowString(30,150,200,16,16,"Please Check!        ");
                delay_ms(500);
                LED0_Toggle;                //DS0闪烁
        }
        //LCD_ShowString(30,150,200,16,16,"QSPI Ready!");
        flash_size=32*1024*1024;        //FLASH 大小为32M字节
          POINT_COLOR=BLUE;                        //设置字体为蓝色          
        while(1)
        {
                //key=KEY_Scan(0);
                if(USART_RX_STA&0x8000)//KEY1按下,写入W25Q128
                {
                        //LCD_Fill(0,170,239,319,WHITE);//清除半屏   
                        //LCD_ShowString(30,170,200,16,16,"Start Write QSPI....");
                        W25QXX_Write((u8*)TEXT_Buffer,flash_size-100,SIZE);                //从倒数第100个地址处开始,写入SIZE长度的数据
                        //LCD_ShowString(30,170,200,16,16,"QSPI Write Finished!");        //提示传送完成
                        delay_ms(500);
               
                        //LCD_ShowString(30,170,200,16,16,"Start Read QSPI.... ");
                        W25QXX_Read(datatemp,flash_size-100,SIZE);                                        //从倒数第100个地址处开始,读出SIZE个字节
                        for(i=0;i<SIZE;i++) printf("  %x  ",datatemp);
                       
                        HAL_UART_Transmit(&UART1_Handler,(u8 *)datatemp,SIZE,1000);        //发送接收到的数据
                        while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET);
                        USART_RX_STA=0;
                       

                       
                        //LCD_ShowString(30,170,200,16,16,"The Data Readed Is:   ");        //提示传送完成
                        //LCD_ShowString(30,190,200,16,16,datatemp);                                        //显示读到的字符串
                }
                       
                                  
        }             
}



最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-8-30 17:03:59 | 显示全部楼层
YONGHU89523 发表于 2019-9-4 10:37
问一下,如果0x41换算成二进制是0b 0100 0001;那么0x41u换算成二进制的话也是0b 0100 0001吗? 0x41和0x ...

是的,一样
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-8-31 02:09:28 | 显示全部楼层
把这个数组: u8 datatemp[SIZE];
定义成全局变量看看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-8-20
在线时间
9 小时
 楼主| 发表于 2019-8-31 16:25:32 | 显示全部楼层
正点原子 发表于 2019-8-31 02:09
把这个数组: u8 datatemp;
定义成全局变量看看。

我把u8放到了文件最开始定义,还是不行。
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-8-20
在线时间
9 小时
 楼主| 发表于 2019-8-31 16:27:12 | 显示全部楼层
这边是数组的全局变量的定义
B.png
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-9-1 01:33:38 | 显示全部楼层
YONGHU89523 发表于 2019-8-31 16:25
我把u8放到了文件最开始定义,还是不行。

仿真找下问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-8-20
在线时间
9 小时
 楼主| 发表于 2019-9-4 10:37:59 | 显示全部楼层

问一下,如果0x41换算成二进制是0b 0100 0001;那么0x41u换算成二进制的话也是0b 0100 0001吗? 0x41和0x41u相等吗?如果不相等改怎么换算呢?谢谢啦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 06:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表