stm32f4 vcp接收函数死机

stm32f4 vcp接收函数死机,第1张

仔细对比了一下与ST库的不同之处在于:for( int i= 0;i<Len;i++) { APP_Rx_Buffer[APP_Rx_ptr_in]=(Buf++); APP_Rx_ptr_in++; // To avoid buffer overflow //下面这个溢出检测需要在for循环类,每发送一次检测 if(APP_Rx_ptr_in == APP_RX_DATA_SIZE) { APP_Rx_ptr_in = 0; } }接收函数经验证没有错误:void USB_Receive(uint8_t Buf,uint32_t Length){ uint32_t i; / Send the received buffer / for (i = 0; i < Length; i++) { Buf

在oracle中可以使用bolb字段类型进行二进制流的存储

Java代码

Oracle中插入并显示(用BLOB类型)

要在oracle里面存入 用 blob类型

首先在数据库里建立:

--连接到管理员

conn sys/tbsoft as sysdba;

--为scott用户授权

grant create any directory to scott;

--回到scott用户

conn scott/tiger;

--创建存储的表

CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);

--创建存储的目录

CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\picture';

--在c:下自己建一个叫picture的文件

CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS

F_LOB BFILE;--文件类型

B_LOB BLOB;

BEGIN

iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE)

VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;

--插入空的blob

F_LOB:= BFILENAME ('IMAGES', FILENAME);

--获取指定目录下的文件

DBMS_LOBFILEOPEN(F_LOB, DBMS_LOBFILE_READONLY);

--以只读的方式打开文件

DBMS_LOBLOADFROMFILE (B_LOB, F_LOB,DBMS_LOBGETLENGTH (F_LOB));

--传递对象

DBMS_LOBFILECLOSE (F_LOB);

--关闭原始文件

COMMIT;

END;

/

--在C:\picture下放一张1gif

--将该存入表

call IMG_INSERT('1','1gif');

然后创建一个web项目 连接数据库后 创建一个BlobDAO类 用来取出表中的blob类型

Java代码 收藏代码

public class BlobDAO {

private static final BlobDAO instance = new BlobDAO();

private Connection conn = null;

private BlobDAO() {

}

public static BlobDAO getInstance() {

return instance;

}

private void initConn() {

conn = DBAccessgetInstance()getConn();

}

public byte[] getImage(String imgname) {

BufferedInputStream ins;//取得BLOB的IO流

byte[] bt = null;

initConn();

Blob bo = null;

PreparedStatement ps = null;

ResultSet rs = null;

String sql = "select T_IMAGE from IMAGE_LOB where t_id=";

try {

ps = connprepareStatement(sql);

pssetString(1, imgname);

rs = psexecuteQuery();

if (rsnext()) {

bo = rsgetBlob("T_IMAGE");

try {

ins = new BufferedInputStream(bogetBinaryStream());

int bufferSize = (int) bolength();//取得BLOB的长度

bt = new byte[bufferSize];

try {

insread(bt, 0, bufferSize);

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

//建立字节缓存

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} finally {

try {

rsclose();

psclose();

connclose();

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

return bt;

}

}

在action里面调用getImage()方法并显示在页面上

Java代码 收藏代码

public ActionForward execute(ActionMapping mapping, ActionForm form,

>

1解压stm32f10x_stdperiph_libzip

可以从ST官方网站免费下载。 2创建一个Demo文件夹 21 新建子文件夹User,用于存放用户源程序 22

新建子文件夹Project,用户KEIL工程文件 23 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。

3 复制源代码到Demo文件夹 31

将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V312Libraries文件整体复制到

Demo文件夹下。这就是ST的标准库,是以源代码形式提供的。 32 将库中的演示代码IOToggle中的文件复制到Demo\User文件夹

4 新建一个Keil MDK工程 41 启动Keil MDK,点击菜单 New uVision Project,然后按向导进行 *** 作

42 选择CPU类型为 STM32F103ZE (这是安富

莱STM32开发板采用CPU类型) 43

当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件) 44

根据自己的需要修改Target名字。(名字任意) 45 为了便于代码管理,在这个Project下创建几个Group (名字可以任意)

User : 存放用户自己写的源代码 RVMDK : 存放启动文件(汇编文件) StdPeriph_Driver :

存放ST标准库文件 CMSIS : 存放CMSIS接口文件(这也是库的一部分) 46 创建好Group后,我们开始依次添加文件。 5

修改源代码。我们将修改mainc 文件,换成我们自己跑马灯程序。 6 配置工程, 点击“Options”按钮 61

切换到Output。 选择Object文件夹。 在Create Hex File 前打钩。 62 切换带Listing。

选择Listings文件夹 63 切换到C/C++

添加两个预编译宏 STM32F10X_HD, USE_STDPERIPH_DRIVER (这是ST库用到了这两个宏)

修改Includes路径 64 切换到Debug 选择硬件调试器(缺省是软件仿真),我们选择Cortex-M3 J-Link调试器 再

Run to main前打钩 64 切换到Utilities 选额调试器类型,我们选择Cortex-M3 J-Link

点settings按钮,添加Flash编程算法,我们选择STM32高密度器件,Flash容量512K字节 7 配置工程完毕。下面开始编译。

8 编译OK,开始调试。 9 教程结束。

1解压stm32f10x_stdperiph_libzip 可以从ST官方网站免费下载。 2创建一个Demo文件夹 21 新建子文件夹User,用于存放用户源程序 22 新建子文件夹Project,用户KEIL工程文件 23 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。 3 复制源代码到Demo文件夹 31 将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V312Libraries文件整体复制到Demo文件夹下。这就是ST的标准库,是以源代码形式提供的。 32 将库中的演示代码IOToggle中的文件复制到Demo\User文件夹 4 新建一个Keil MDK工程 41 启动Keil MDK,点击菜单 New uVision Project,然后按向导进行 *** 作 42 选择CPU类型为 STM32F103ZE (这是安富莱STM32开发板采用CPU类型) 43 当提示是否复制启动代码时,请选择否。(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件) 44 根据自己的需要修改Target名字。(名字任意) 45 为了便于代码管理,在这个Project下创建几个Group (名字可以任意) User : 存放用户自己写的源代码 RVMDK : 存放启动文件(汇编文件) StdPeriph_Driver : 存放ST标准库文件 CMSIS : 存放CMSIS接口文件(这也是库的一部分) 46 创建好Group后,我们开始依次添加文件。 5 修改源代码。我们将修改mainc 文件,换成我们自己跑马灯程序。 6 配置工程, 点击“Options”按钮 61 切换到Output。 选择Object文件夹。 在Create Hex File 前打钩。 62 切换带Listing。 选择Listings文件夹 63 切换到C/C++ 添加两个预编译宏 STM32F10X_HD, USE_STDPERIPH_DRIVER (这是ST库用到了这两个宏) 修改Includes路径 64 切换到Debug 选择硬件调试器(缺省是软件仿真),我们选择Cortex-M3 J-Link调试器 再 Run to main前打钩 64 切换到Utilities 选额调试器类型,我们选择Cortex-M3 J-Link 点settings按钮,添加Flash编程算法,我们选择STM32高密度器件,Flash容量512K字节 7 配置工程完毕。下面开始编译。 8 编译OK,开始调试。 9 教程结束。

你在“添加文件”中把C文件加入工程中,另外,你还需要创建一个对应于这个C文件的H文件,和C文件放在一个目录下,这样在需要调用的文件头上加一句#includee "myfunctionh"就可以了。

以上就是关于stm32f4 vcp接收函数死机全部的内容,包括:stm32f4 vcp接收函数死机、.net怎样将图片以二进制流的方式存入Oracle数据库里 在以二进制流的方式读取显示 380543828@qq.com 求源码、如何使用MDK5.0建立STM32F103工程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9340272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存