小白qi开始学RTOS

  • 前言
  • 一、不知道从什么地方开始学习
  • 二、LED线程
  • 三、输出配置

前言

本人傻白甜,在做MCU工作时边摸鱼边工作一年后,被别人考察到操作系统时,发现自己一窍不通(你学了一年怎么啥都不会)。在后悔莫及的时候发奋开始学习RTOS,同时在这里记录学习日志给其他小白做做案例,给各位大佬做做小白鼠,欢迎各位大佬指正。


一、不知道从什么地方开始学习

鉴于工作原因,使用的MCU是HT32F52352。很不幸,有点冷门,网上资料很少。
而且由于是第一次接触RTOS,所以也不知道从哪里入手。
所以首先百度了RTOS什么好的时候,搜到了威名远扬的uC/OS,大伙都在夸它,我就决定从uC/OS II开始。
第一次嘛,肯定什么都不懂,就觉得跟着视频做就对了。
所以直接在某二次元 网站上观看大佬的视频。
果不其然,基本都是STM32的。不过没关系,慢慢看。
视频一开始都是说uC/OS II厉害在哪里,我听的头头是道。我觉得很有道理,欢迎大家也去听听。
但是我看到视频中,直接从已经移植好的库里面拷贝uC/OS PORT的代码过来直接使用的时候我就蒙了。
上哪找这移植好代码?总不能自己移植吧,说是这么说,试还是得试的,结论就是自己太菜,什么都看不懂,更别说移植。
正值烦恼的时候,在网上瞎搜看到一篇文章:初学者到底该选择什么RTOS?
感谢大佬使我豁达开朗,决定先学习较为简单rt-thread。
所以推荐小白们,如果小白们是STM32玩家,在RTOS的学习上可以浪,有大把资源,各种视频手把手教学。
但如果小白们是的冷门的MCU玩家,在没有先有案例的情况下,还是从简单但RTOS系统开始学。
最后rt-thread在官网上的资料实在是太齐全了,而且还是中文版的,简直是小白们的天堂。
我先去啃了,大家再见。

二、LED线程

低一次上手,菜刀小试了下,写了个线程,感觉和电脑上写软件的线程差不多。

static void my_Led_change(void *param){OUT_PC14_XOR;
}int my_Led_start(){rt_timer_t timer1 = rt_timer_create("timer1", my_Led_change, RT_NULL, 250, RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER); if (timer1 != RT_NULL)rt_timer_start(timer1);return 0;
}int main(void){GPIO_Configuration();my_Led_start();while (1)  {rt_thread_mdelay(100);OUT_PC15_XOR;}
}

三、输出配置

试了几轮。啃了写代码。发现自己看进展很慢。所以又跑去看视频(二倍速),突然发现RT-thread可以用串口接收命令从而控制线程的是否开启,所以自己摸索的话视频还是要看的。
所以需要配置串口以及rt_kprintf。
首先是rt_kprintf,rt_kprintf实际调用输出的是rt_hw_console_output,但是rt_hw_console_output是个空函数,而且它被__attribute__((weak))修饰,是个弱函数。这个的作用用自己话理解的话就是:可以直接再定义一个非弱函数的rt_hw_console_output来重写原有的rt_hw_console_output。
这个很简单的网上抄了一个丢在board.c。

void rt_hw_console_output(const char *str)
{/* empty console output */rt_enter_critical(); while(*str != 0){if(*str == '\n'){HT_USART1->DR = '\r';  while ((HT_USART1->SR & USART_FLAG_TXC) == 0);}HT_USART1->DR = *str++;   while ((HT_USART1->SR & USART_FLAG_TXC) == 0);}rt_exit_critical();
}

这里rt_enter_critical()是啥我还不知道,下轮再修改补上。
其他的感觉跟一般的重写fputc一样一样的。
然后是usart的配置,但是usart配置完初始化不可以放在main()下面,而是要放在rt_hw_board_init()下面。
原因是rt-thread在main前面已经有输出了,所以得在输出之前初始化。
然后就可以发送数据了。

小白开始学RTOS 1相关推荐

  1. python从0开始学编程课件_小白从零开始学编程(三)--python基本概念

    前言 从2020年3月份开始,计划写一系列文档--<小白从零开始学编程>,记录自己从0开始学习的一些东西. 第一个系列:python,计划从安装.环境搭建.基本语法.到利用Django和F ...

  2. 零基础小白如何学习好UI设计

    智能时代的来临,很多企业都越来越注重用户体验这一块,想要有一个吸引用户的好页面,UI设计师岗位不可或缺,如今越来越多的人想要学习UI设计技术,那么对于零基础小白如何学习好UI设计呢? 零基础小白如何学 ...

  3. python零基础怎么学-零基础的小白怎么学python?

    零基础的小白怎么学python?下面本篇文章就来给介绍一下,希望对你们有所帮助. 1.选择Python版本 对于Python工程师来说,Python的版本则是你们的工作环境.所以在学习之前一定要考虑选 ...

  4. python最低薪资_最低15K,最高50K,Python薪资节节高,小白怎么学?

    原标题:最低15K,最高50K,Python薪资节节高,小白怎么学? 近期,数据科学网站KDnuggets发布了2018数据科学和机器学习工具调查结果:Python荣登第一,成为最受青睐的分析.数据科 ...

  5. 电脑小白学python_零基础的小白怎么学python?

    零基础的小白怎么学python?下面本篇文章就来给介绍一下,希望对你们有所帮助. 1.选择Python版本 对于Python工程师来说,Python的版本则是你们的工作环境.所以在学习之前一定要考虑选 ...

  6. python画画用哪库好_小白开始学Python最著名的绘图库

    原标题:小白开始学Python最著名的绘图库 这是菜鸟学Python的第101篇原创文章 数据分析里面可视化是重要的环节,辛苦把数据采集,然后经历了很多工序的清洗之后,最后要展现给用户,最好的方法就是 ...

  7. python零基础自学教材-零基础的小白怎么学python?

    零基础的小白怎么学python?下面本篇文章就来给介绍一下,希望对你们有所帮助. 1.选择Python版本 对于Python工程师来说,Python的版本则是你们的工作环境.所以在学习之前一定要考虑选 ...

  8. 新手小白怎么学抖音运营?抖音运营5大技巧

    在进入正文之前,给大家分享两个利用抖音变现的案例,也让大家看看,抖音的变现能力. 案例A: 如图为抖音带货,当账号所有人在视频的内容中添加商家的产品后,通过此条链接成交的产品,都会给予账号所有人60% ...

  9. win10切换输入法快捷键_电脑小白必学的5个Win10技巧

    原标题:电脑小白必学的5个Win10技巧 Win10发布到现在已经5年了,从最开始的全民吐槽,到现在更新换代全面普及,Win10的优点逐渐被大家发掘受用.今天小E为大家介绍一些Win10使用技巧与软件 ...

  10. python画图库哪个好_小白开始学Python最著名的绘图库

    这是菜鸟学Python的第101篇原创文章 阅读本文大概需要3分钟 数据分析里面可视化是重要的环节,辛苦把数据采集,然后经历了很多工序的清洗之后,最后要展现给用户,最好的方法就是数据可视化.数据可视化 ...

最新文章

  1. 为什么阿里强制 boolean 类型变量不能使用 is 开头?
  2. linux文本处理工具之grep与正则表达式语法
  3. 【C#】详解C#委托
  4. Shell脚本之条件判断
  5. [C#]获得线程池中活动的线程数
  6. 程序员应该抛弃的10种思维定式
  7. Apache JK Tomcat 集群问题
  8. Redis 学习---(5)Redis 命令
  9. Scientific Reports|比较转录组分析揭示了杀菌剂氰烯菌酯对尖孢镰刀菌的抗性调控机制和杀菌活性
  10. 零基础学FPGA(二):FPGA生产厂家及产品(呕心沥血,小白如何选择板卡)
  11. ARCH模型以及编程实现
  12. python爬虫——中文编码
  13. 农场买了一羊,第一年是小羊,第二年底生一只,第三年不生,第四年底再生一只,第五年死掉
  14. 字节跳动实习生转正工资_字节跳动hr实习生
  15. linux挂马检测,检测网站挂马程序(Python)
  16. 使用JohnTheRipper对有密码加密的ZIP压缩包文件进行暴力破解
  17. Springboot毕设项目企业财务管理系统lmm93java+VUE+Mybatis+Maven+Mysql+sprnig)
  18. gcc生成静态库.a和动态库.a以及Ubuntu18.04下opencv3.4.11安装及示例
  19. linux V4L2子系统——v4l2架构(3)之video_device
  20. 前端获取电脑摄像头权限并拍照进行人脸识别

热门文章

  1. JAVA正则表达式校验中国大陆手机号段【2022年2月】
  2. 东南大学计算机技术935专业考研经验分享
  3. 盖茨与鲍尔默愤而诉Google 李开复离职有内情 -- ,买skype来控制桌面建立渠道吧
  4. opendevops_codo项目研究
  5. windowsapps文件夹无法删除_Windows实战之快速安全删除Windows.old文件夹
  6. OpenCV-Python实现有参照物条件下的长方形物体尺寸推算(可实时、附源码)
  7. 转:MySQL 的 my.cnf 文件(解决 5.7.18 下没有 my-default.cnf )
  8. 四方伟业冲刺科创板:年营收为2.8亿 南威软件与文化基金是股东
  9. 惊艳!ftrack和UE4,强强联合!
  10. 把数字翻译成中文的计算机,数字翻译成中文,把数字翻译成中文