[STM32F1] 求问,STM32f103在不带系统的情况下如何实现多个任务?

[复制链接]
2975|14
 楼主| liuzhongkai123 发表于 2014-3-24 18:28 | 显示全部楼层 |阅读模式
本帖最后由 liuzhongkai123 于 2014-3-24 19:31 编辑

实现功能是这样的,16路I/O采集、两路AD采集、串口采集、网口输出,如果不采用系统是否可以实现,我想的是采用中断,串口与I/O采集不是连续数据,如果有数据时就中断处理,而ad采集作为主循环。网口输出外接ENC28J60,SPI通讯,当有数据(包括IO、AD、串口)需要上传时调用LWIP协议栈。我的应用背景是数控机床的状态数据采集,就是用stm32将开关信息、NC程序、外接传感器数据上传,不过这里是多任务的,而我没弄过系统,所以问问可不可以实现裸机的。如果中断可实现,这么多的中断源,其优先级如何设定呢?大体结构如图。


大体结构

大体结构
pattywu 发表于 2014-3-24 18:36 | 显示全部楼层
多任务,也是分时系统。
你用一个定时器来调度各个功能,可以不需要系统的。

照你的要求,不用RTOS的话,实现起来比较难,出了问题也不好查原因。
用RTOS,其目的就是为了简化编程的,逻辑关系清楚。

建议LZ还是学学RTOS.
 楼主| liuzhongkai123 发表于 2014-3-24 19:06 | 显示全部楼层
pattywu 发表于 2014-3-24 18:36
多任务,也是分时系统。
你用一个定时器来调度各个功能,可以不需要系统的。

是使用ucos吗,还是别的系统比较好。不知这种多长时间能搞定,我还有一个月答辩了,时间还是挺紧的。
若如初见100 发表于 2014-4-1 13:11 | 显示全部楼层
建议学学uC/OS-II,如果仅仅是为了完成项目,不去深入研究的话,很容易上手的。我当年也就花了1个多星期吧,先把任务跑起来,然后慢慢深入研究学习,同时优化改进你的项目。等你用了之后,就再也不想用以前没带系统的方式编程了,你会尝到甜头的,相信我。
 楼主| liuzhongkai123 发表于 2014-4-1 18:48 | 显示全部楼层
若如初见100 发表于 2014-4-1 13:11
建议学学uC/OS-II,如果仅仅是为了完成项目,不去深入研究的话,很容易上手的。我当年也就花了1个多星期吧 ...

谢谢建议,嵌入式系统我一定会去学的,目前先把论文写完。
airwill 发表于 2014-4-1 22:11 | 显示全部楼层
本帖最后由 airwill 于 2014-4-1 22:13 编辑

合理安排, 裸机, 应该也能够实现.
不排除, 局部数据忙碌的时候会有点 "卡"
mcuatmel 发表于 2014-4-2 08:17 | 显示全部楼层
这样的需求完全可以裸奔。
 楼主| liuzhongkai123 发表于 2014-4-2 15:03 | 显示全部楼层
airwill 发表于 2014-4-1 22:11
合理安排, 裸机, 应该也能够实现.
不排除, 局部数据忙碌的时候会有点 "卡"

有大神来啦。那要是裸机的话,程序循环的时间怎么计算呢,16路扫描+4路AD转换时间大概有多少?
 楼主| liuzhongkai123 发表于 2014-4-2 15:04 | 显示全部楼层
mcuatmel 发表于 2014-4-2 08:17
这样的需求完全可以裸奔。

嗯,我现在写的就是按照裸奔来的。裸机是轮询16路IO与4路ADC,然后串口采用中断的方式,不知这样逻辑行不行,时间会耗多少。
airwill 发表于 2014-4-2 15:24 | 显示全部楼层
16路扫描+4路AD转换时间大概有多少?
完全看你的处理, 应该可以在 10uS 量级
 楼主| liuzhongkai123 发表于 2014-4-3 12:30 | 显示全部楼层
airwill 发表于 2014-4-2 15:24
16路扫描+4路AD转换时间大概有多少?
完全看你的处理, 应该可以在 10uS 量级 ...

一般要想知道程序运行时间,只能通过编译器计算吗,如何获得精确的时间呢
yzzly 发表于 2014-4-3 14:15 | 显示全部楼层
太简单了!
Rain_King 发表于 2014-4-3 14:32 | 显示全部楼层
你这个简单的要死啊....我都是需要扫描6路AD,还包括一系列的屏幕显示,捕捉2个,等等都是裸机运行的,一点问题都没有.............
 楼主| liuzhongkai123 发表于 2014-4-3 18:48 | 显示全部楼层
airwill 发表于 2014-4-2 15:24
16路扫描+4路AD转换时间大概有多少?
完全看你的处理, 应该可以在 10uS 量级 ...

大侠,现在有个问题。我一直LWIP协议,实现TCP/IP通讯没问题,但是上位机我用C++编程,上位机用的是SOCKET编程的,LWIP怎么连接到上位机啊,如果用LWIP的socket是不是一定要系统。如果不用socket的话,下位机怎么与上位机TCP通讯呢?求指导!!!
runningwzf 发表于 2014-4-3 19:01 | 显示全部楼层
DMA结合中断的方式估计也行
不过加上系统的话会更顺,你的开发周期会更短
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

113

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部