基于STM32F107与RT-Thread的数据采集器方案设计与解析.doc

上传人:白大夫 文档编号:3412074 上传时间:2019-08-22 格式:DOC 页数:2 大小:14KB
返回 下载 相关 举报
基于STM32F107与RT-Thread的数据采集器方案设计与解析.doc_第1页
第1页 / 共2页
亲,该文档总共2页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于STM32F107与RT-Thread的数据采集器方案设计与解析.doc》由会员分享,可在线阅读,更多相关《基于STM32F107与RT-Thread的数据采集器方案设计与解析.doc(2页珍藏版)》请在三一文库上搜索。

1、基于STM32F107与RT-Thread的数据采集器方案设计与解析作者孙冬梅:南京工业大学自动化与电气工程学院博士、副教授设计了基于系统功能如图1 所示,不算太复杂。由于下级GPRS模块使用实际上是串口数据的收到处理。首先创建gprswatch进程,用来监控串口接收数据。void gprswatch(void) rt_thread_t thread; thread = rt_thread_find(gprswatch); if( thread != RT_NULL) rt_thread_dele监视GPRS串口线程中,当收到串口数据后,接收并分析,置位网络状态。/* 监视GPRS串口线程入口

2、*/void gprswatch_entry(void* pa在程序其它地方完成对应GPRS模块的监控和操作。对GPRS模块读和写操作也编写了一个设备操作函数,主要是利用前面编写的gprswatch线程操作:/*GPRS模块发送和接收*/rt_bool_t gprs_send_data_package(unsigned char *cmd,char *ack,rt_uint32_t waittime, rt_uint8_t retrytime, rt_uint32_t len) rt_bool_t res = RT_FALSE; rt_err_t result = RT_EOK; rt_uin

3、t32_t event; unsigned char gprs_rx_bufferGPRS_RX_LEN=0x00; rt_thread_t thread; thread = rt_thread_find(gprswatch); if( thread != RT_NULL) rt_thread_delete(thread); do rt_device_write(gprs_device, 0, cmd, len); result = rt_event_recv( if (result = RT_EOK) if (event rt_thread_delay(RT_TICK_PER_SECOND/

4、2); rt_device_read(gprs_device, 0, gprs_rx_buffer, GPRS_RX_LEN); rt_kprintf(gprs_rx_buffer); if(rt_strstr(cmd,MSG_IMSI)/如果是读IMSI 解析出IMSI数据 unsigned char *addr; addr = rt_strstr(char const*)gprs_rx_buffer,AT+CI至此,基本实现了GPRS模块的设备操作。在RTT工程中,int rt_application_init(void) 函数给出了一个最基本的使用方法,动态创建线程rt_thread_c

5、reate,动态分配内存。在程序编写的过程,由于内存太小,不得不心划分分配的内存。手册建议在程序运行过程中使用命令查看线程的占用内存,再按经验分内存,这样操作,还是地调试过程中出现很多次错误。后来再翻看手册,仿造例子修改程序为静态分配内存的线程创建,rt_thread_init,上面的错误就不再出现了。编写了基于RTT的 STM32F107平台的例程,发布在github上:https:/github/sundm75/STM32F107Board-rttproject每个example下的 applications中,都有一个对应的 test* 文件。该文件中,全部使用的finsh 在串口控制中操作。- End -

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1