8205|15

145

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

小菜鸟之ucos遇到的菜鸟问题总结 [复制链接]

 好像搞ucos有一段时间了,哈哈,感觉自己是慢热型。很多问题后面才恍然大悟,我擦,原来这么简单。不过学习的乐趣就在于此。可能刚开始觉得很难得问题在后来你甚至觉得可能是个弱智问题,但是当初就是为难了你那么久。

前几天写工作报告,哈哈,觉得没做什么东西。没什么好总结的,老大说,你做了好些时间当然觉得简单,报告要让没有做过的人也能看懂你在做什么。断断续续也记录了一些自己从开始到现在的一些问题,当时做的时候阻难自己很久。现在分享出来,希望对刚入门的童鞋有些许帮助。

1.Ucos系统需要自己移植吗?
答: 可能很多人做项目都会自己移植,毕竟这个系统很简单,移植工作其实很简单。不过你要比较懒的话,那么ucos官方对于大多数板子都有对应的内核,http://micrium.com/rtos/去这个地方找,只不过官方的系统屏蔽了一些STM自己的东西,这些个问题后面会提到。

2. 为什么下载了系统却跑不起来?(有可能会遇到这个问题,哈哈,好弱智的问题)
   答: 先在编译器里检查是不是设置的对应的芯片型号。因为官网的系统都是某一类型号,比如说STM32LXX,我用到的是STM32L152RB类型的,那么就检查一下是不是这个类型的。这个问题彻底暴露了我的智商。。。哈哈哈哈哈

3. 为什么我的灯不亮?
   答: 这个问题有点奇怪。哈哈,不过对于从来没有接触过硬件的同学来说极大的可能性会遇到这个问题。问题其实很简单,看看你的管脚配置是否正确,看看你的时钟是否使能。以后遇到的问题首先应该检查的就是对于相应外设的初始化,切记。



4. stm32+ucos的串口为什么不能进去中断?(这个问题其实应该注意一下)
  答: 前面提到了ucos官网下载的系统会屏蔽STM32库自带的一些函数,其中一个就是开中断函数。Ucos里这样实现的:
BSP_IntVectSet(BSP_INT_ID_USART1,BSP_IntHandlerUSART1);
   BSP_IntPrioSet (BSP_INT_ID_USART1,        1);
   BSP_IntEn(BSP_INT_ID_USART1);   
其中BSP_IntHandlerUSART1是中断函数名。必须得用它的函数才能实现,不然好像是不能开中断,这个问题大可以试试。



5. 中断开了,但是为什么一直进中断?
  答:  去看看你的函数里到底有没有清中断。。。接收中断,发送中断,开了几个中断,关了几个中断。比如USART_ITConfig(USART1, USART_IT_RXNE, ENABLE)或者USART_ITConfig(USART1, USART_IT_TXE, ENABLE)不仅仅是开中断,还会产生相应的中断即置相应的中断位,处理器转向中断程序,如果中断程序中没有对中断位复位,就会一直中断,导致以为启动代码有问题等等。
      还有就是有人说STM的板子其实是有bug的,不过我没有遇到这种情况,实际情况自己判断


6.串口中断函数里面改如何实现?

我的串口中断里面就是接收字节。中断函数里实现接收字符,因为中断时一个字符一个字符的接收。接受一个字节就进一次中断,可能对后期的接收问题有影响,比如说你的速率很快,那么就会导致数据丢失,当然这是后话。中断函数的实现:
void USART1_IRQHandler(void){
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
        BSP_LED_On(3);                                      //进中断的标志
          USART_ClearITPendingBit(USART1,USART_IT_RXNE);
rec_len = USART_ReceiveData(USART1);         //接收到的数据存入一个全局数组
        i++;               
        if(i == (rec_len[0] + 1)){                     //if判断的是后面接收到个个数是不是等于第一个字节,如果是那说明是对的
                rec_len = 'L';                 //给一个结束标志。这样接收完成的时候就会结束接收
                i = 0;                       //继续把后来接收到的数据存入数组
            OSMboxPost(MSGBOX,&rec_len);
                 }       
}
}
这是用串口的时候,串口接收字符的实现,很简单,就是把接收到的字符存到一个数组里,等到接收结束再把它发出去。


7. 当波特率高的时候,比如说到921600或者更高的时候就会出错,为什么?
答: 当波特率比较高的时候,因为传输速率快,而串口是接收一个字符就进一次中断,怀疑是这种处理方式浪费了时间导致数据丢失,但是这仅仅是猜测。


哈哈,看了很久ucos,前面基本没有接触过硬件,至少编程没有直接和硬件打交道。现在一步一步慢慢的来,遇到了不少麻烦,不过好在开始知道怎么弄了。学习嘛,哈哈,快乐工作,快乐生活。祝诸位技术突飞猛进,当然工作顺利啦。

后面遇到问题在慢慢更新好了,哈哈,感觉进度好慢。什么时候才能完成一个完整的项目,这么久了项目才开了个头。哈哈。

最新回复

不错,支持!  详情 回复 发表于 2014-4-16 10:04

点评

技术的东西 急不得 慢工出细活儿 夯实基础 呵呵  详情 回复 发表于 2013-6-21 11:23
点赞 关注
 

回复
举报

2万

帖子

74

TA的资源

管理员

沙发
 
哇  相当详细啊   谢谢楼主分享
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

哈哈 老看别人技术帖子 老问别人问题也觉得不好意思 自己稍微弄明白儿点了 给需要帮助的人一点儿提示  详情 回复 发表于 2013-6-21 13:28
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

2万

帖子

74

TA的资源

管理员

板凳
 

回复 楼主 小小小小菜鸟 的帖子

技术的东西   急不得 慢工出细活儿  夯实基础 呵呵
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

确实是的 吼吼吼  详情 回复 发表于 2013-6-21 13:28
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

145

帖子

2

TA的资源

一粒金砂(高级)

4
 

回复 沙发soso 的帖子

哈哈 老看别人技术帖子 老问别人问题也觉得不好意思  自己稍微弄明白儿点了 给需要帮助的人一点儿提示

点评

嘿嘿 给力 赞一个 :)  详情 回复 发表于 2013-6-21 13:29
 
 
 

回复

145

帖子

2

TA的资源

一粒金砂(高级)

5
 

回复 板凳soso 的帖子

确实是的 吼吼吼
 
 
 

回复

2万

帖子

74

TA的资源

管理员

6
 
原帖由 小小小小菜鸟 于 2013-6-21 13:28 发表
哈哈 老看别人技术帖子 老问别人问题也觉得不好意思  自己稍微弄明白儿点了 给需要帮助的人一点儿提示
嘿嘿 给力  赞一个  :)
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

1119

帖子

0

TA的资源

一粒金砂(中级)

7
 
过来跑堂的,看不懂的说。但是楼主这种精神值得我去学习

点评

哈哈 谢谢先  详情 回复 发表于 2013-6-21 17:22
 
 
 

回复

145

帖子

2

TA的资源

一粒金砂(高级)

8
 

回复 7楼kemasz 的帖子

哈哈 谢谢先
 
 
 

回复

145

帖子

2

TA的资源

一粒金砂(高级)

9
 
又遇到一个问题  在中断里用邮箱发送一个消息到任务  这时候中断语句并没有执行完毕,那么是先执行任务还是先执行中断呢  纠结
 
 
 

回复

145

帖子

2

TA的资源

一粒金砂(高级)

10
 
先记录一下  就算处理完成 那么  关中断 数据过来没出去也会丢失
 
 
 

回复

4997

帖子

19

TA的资源

裸片初长成(初级)

11
 
不错啊。。。

点评

哈哈 唉 好多问题  详情 回复 发表于 2013-6-24 12:20
 
个人签名我的博客
 
 

回复

272

帖子

0

TA的资源

纯净的硅(初级)

12
 
顶一个,楼主加油啊
有啥问题 可以说出来大家一起讨论讨论
ucos2这块  讨论的 比较少
就需要楼主这样的人
哈哈哈

点评

一起加油啦  详情 回复 发表于 2013-6-24 12:21
 
 
 

回复

145

帖子

2

TA的资源

一粒金砂(高级)

13
 

回复 11楼zhaojun_xf 的帖子

哈哈 唉 好多问题
 
 
 

回复

145

帖子

2

TA的资源

一粒金砂(高级)

14
 

回复 12楼xinjitmzy 的帖子

一起加油啦
 
 
 

回复

30

帖子

0

TA的资源

一粒金砂(中级)

15
 
我的程序在 if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) 这卡住了,请问是什么问题啊
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

16
 
不错,支持!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表