OpenEdv-开源电子网

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

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

[复制链接]

6

主题

13

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-10-5
在线时间
9 小时
发表于 2017-6-13 17:09:03 | 显示全部楼层 |阅读模式
5金钱
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;                        //设置字体为蓝色         
        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;
                }                  
        }      
}


最佳答案

查看完整内容[请看2#楼]

我去,哥们儿你不是搞C语言的吧?定义一个数组就是了。例如:u8 Data_Buffer[DATA_LEN];然后Data_Buffer数组里的数据想怎么折腾怎么折腾。
做到老,学到老,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2017-6-13
在线时间
10 小时
发表于 2017-6-13 17:09:04 | 显示全部楼层
我去,哥们儿你不是搞C语言的吧?定义一个数组就是了。例如:u8 Data_Buffer[DATA_LEN];然后Data_Buffer数组里的数据想怎么折腾怎么折腾。
回复

使用道具 举报

2

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2017-6-13
在线时间
10 小时
发表于 2017-6-13 17:32:31 | 显示全部楼层
是想写一个字节数据吗?你直接看W25QXX_Write函数里面,参照程序重新自己写一个W25QXX_WriteByte函数就是了。
回复

使用道具 举报

6

主题

13

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-10-5
在线时间
9 小时
 楼主| 发表于 2017-6-13 18:27:50 | 显示全部楼层
不是一个字节,要求发送的不是字符串,是数据
做到老,学到老,
回复

使用道具 举报

29

主题

311

帖子

0

精华

高级会员

Rank: 4

积分
747
金钱
747
注册时间
2016-5-21
在线时间
199 小时
发表于 2017-6-14 11:44:07 | 显示全部楼层
proejia 发表于 2017-6-13 18:27
不是一个字节,要求发送的不是字符串,是数据

字符串就是字节 ,字节就是字符串,字符串也是数组,一样的
回复

使用道具 举报

6

主题

13

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-10-5
在线时间
9 小时
 楼主| 发表于 2017-6-14 19:12:30 | 显示全部楼层
初学者,谢谢各位解答
做到老,学到老,
回复

使用道具 举报

5

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2014-3-16
在线时间
111 小时
发表于 2017-6-16 20:54:15 | 显示全部楼层
这里新手太多了。
回复

使用道具 举报

8

主题

82

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2017-11-4
在线时间
88 小时
发表于 2018-1-6 11:33:04 来自手机 | 显示全部楼层
楼主大哥,我也遇到了你这样的问题,不知道怎么发送和接收数组里面的数据,求指导!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 22:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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