SPI如何改成直接发送字节数据,不是字符串

2019-07-20 10:09发布

SPI如何改成直接发送和接收字节数据,不是字符串   我要实现功能是,不是用字符串,是数值
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "spi.h"
#include "w25qxx.h"
#include "key.h"  


//ALIENTEK 探索者STM32F407开发板 实验25
//SPI通信接口实验-库函数版本
//技术支持:www.openedv.com
//淘宝店铺:http://eboard.taobao.com  
//广州市星翼电子科技有限公司  
//作者:正点原子 @ALIENTEK



//要写入到W25Q16的字符串数组          这里如何改是是数据,不是字符串
const u8 TEXT_Buffer[]={"Explorer STM32F4 SPI TEST"};
#define SIZE sizeof(TEXT_Buffer)         
        
int main(void)
{
        u8 key;
        u16 i=0;
        u8 datatemp[SIZE];
        u32 FLASH_SIZE;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);     //初始化延时函数
        uart_init(115200);        //初始化串口波特率为115200
        LED_Init();                                        //初始化LED
         LCD_Init();                                        //LCD初始化
        KEY_Init();                                 //按键初始化  
        W25QXX_Init();                        //W25QXX初始化
         POINT_COLOR=RED;
        LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");        
        LCD_ShowString(30,70,200,16,16,"SPI TEST");        
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2014/5/6");         
        LCD_ShowString(30,130,200,16,16,"KEY1:Write  KEY0:Read");        //显示提示信息               
        while(W25QXX_ReadID()!=W25Q128)                                                                //检测不到W25Q128
        {
                LCD_ShowString(30,150,200,16,16,"W25Q128 Check Failed!");
                delay_ms(500);
                LCD_ShowString(30,150,200,16,16,"Please Check!      ");
                delay_ms(500);
                LED0=!LED0;                //DS0闪烁
        }
        LCD_ShowString(30,150,200,16,16,"W25Q128 Ready!");
        FLASH_SIZE=16*1024*1024;        //FLASH 大小为16字节
          POINT_COLOR=BLUE;                        //设置字体为蓝 {MOD}         
        while(1)
        {
                key=KEY_Scan(0);
                if(key==KEY1_PRES)//KEY1按下,写入W25Q128
                {
                        LCD_Fill(0,170,239,319,WHITE);//清除半屏   
                         LCD_ShowString(30,170,200,16,16,"Start Write W25Q128....");
                        W25QXX_Write((u8*)TEXT_Buffer,FLASH_SIZE-100,SIZE);                //从倒数第100个地址处开始,写入SIZE长度的数据 这里如何改是是数据,不是字符串
                        LCD_ShowString(30,170,200,16,16,"W25Q128 Write Finished!");        //提示传送完成
                }
                if(key==KEY0_PRES)//KEY0按下,读取字符串并显示
                {
                         LCD_ShowString(30,170,200,16,16,"Start Read W25Q128.... ");
                        W25QXX_Read(datatemp,FLASH_SIZE-100,SIZE);                                        //从倒数第100个地址处开始,读出SIZE个字节
                        LCD_ShowString(30,170,200,16,16,"The Data Readed Is:   ");        //提示传送完成
                        LCD_ShowString(30,190,200,16,16,datatemp);                                        //显示读到的字符串 这里如何改是是数据,不是字符串
                }
                i++;
                delay_ms(10);
                if(i==20)
                {
                        LED0=!LED0;//提示系统正在运行        
                        i=0;
                }                  
        }      
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
335920284
1楼-- · 2019-07-20 15:25
 精彩回答 2  元偷偷看……
335920284
2楼-- · 2019-07-20 20:25
是想写一个字节数据吗?你直接看W25QXX_Write函数里面,参照程序重新自己写一个W25QXX_WriteByte函数就是了。
proejia
3楼-- · 2019-07-21 02:18
 精彩回答 2  元偷偷看……
haysen
4楼-- · 2019-07-21 03:34
proejia 发表于 2017-6-13 18:27
不是一个字节,要求发送的不是字符串,是数据

字符串就是字节 ,字节就是字符串,字符串也是数组,一样的
proejia
5楼-- · 2019-07-21 09:12
初学者,谢谢各位解答
mon51
6楼-- · 2019-07-21 10:31
 精彩回答 2  元偷偷看……

一周热门 更多>