0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32操作系统系列使用C语言的教程

汽车玩家 来源:CSDN 作者:CSDN 2021-08-10 23:26 次阅读

C语言,相对于汇编有更好的可读性,便于维护等优点。下面实验将使用C语言实现点亮LED灯。C语言与硬件是紧密连在一起的,结合芯片中的flash和sram,简单了解C语言。

步骤:

  • FLASH,就是存放.bin文件的地方。SRAM,用于存放程序的堆栈,全局变量。


  • MEMORY,用于定义存储器范围。


  • AT>rom,表示将对应的SECTION放置到rom中,即Flash中。


  • _data_start / _data_end,用于说明data段在flash中的位置,方便程序将data段从flash中复制到sram中。


  • _ram_data_start,表示data段将复制到sram中的什么位置。


  • ADDR(),表示获得SECTION的运行地址vma,当程序被下载到flash后,程序开始运行时首先要将data段移动到sram中0x20000400地址处,这样程序运行时才不会出错。


  • LOADADDR(),表示获得SECTION的加载地址lma。


  • SIZEOF(),用于求SECTION的大小


  • 整个SECTIONS,可以看做是程序在flash中的布局,其中.bss不占用flash空间,它是由程序中开始运行时,在sram中开辟空间并初始化为0。


  • 各个SECTION,如.vectors\.text\.rodata\.data\.bss,分别存放不同类型的数据。


本质就是C语言中的指针操作,volatile作用是确保本条指令不会因编译器的优化而省略。如代码“RCC_APB2ENR |= 0x00000010;”,表示向寄存器的第4位(从0位开始计数)写1。

文章整合自:CSDN

编辑:ymf

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22449

    浏览量

    645873
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348738
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128580
收藏 人收藏

    评论

    相关推荐

    带你认识实时操作系统(rtos)

    实时操作系统(RTOS)是为嵌入式系统和实时应用提供一个稳定、可预测和高效运行环境的操作系统。实时操作系统确保了系统能够在严格的时间限制内响
    的头像 发表于 04-16 16:30 125次阅读
    带你认识实时<b class='flag-5'>操作系统</b>(rtos)

    深度解析全球操作系统格局

    操作系统是负责协调、管理和控制计算机硬件与软件资源的程序,是整个计算机的核心系统软件。 按照操作系统面向的设备类型,通用操作系统主要包括桌面操作系统
    的头像 发表于 01-18 15:00 282次阅读
    深度解析全球<b class='flag-5'>操作系统</b>格局

    详解实时操作系统和非实时操作系统

    实时操作系统,当外界事件和数据产生时,系统能以足够快的速度予以处理,其处理结果能在规定的时间内控制生产结果或对系统做出响应,并控制所有实时任务协调一致运行的操作系统
    的头像 发表于 12-26 09:54 1883次阅读
    详解实时<b class='flag-5'>操作系统</b>和非实时<b class='flag-5'>操作系统</b>

    linux属于什么操作系统

    Linux属于一种类UNIX操作系统。Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统
    的头像 发表于 11-08 11:01 1737次阅读

    如何判断自己的应用需要上实时操作系统

    无线,WIFI无线。主要是数据采集,多种通信规约转换。 请问怎么判断自己的设备需要上实时操作系统;实时操作系统中,ucos、freertos、rt-thread在应用上,或者说是实时性响应上应该没区别吧。
    发表于 10-28 08:12

    开源操作系统大全

    ,重启后不会影响用户数据;KnightOS 内核具有独立特性,它采用类 Unix 的环 境,使用 Z80 的汇编语言编写,开发者可以用它来编写自己的操作系统;需要较少的内存,使用 31K 的内存即可
    发表于 10-27 15:13

    汇编语言可以写小型操作系统吗?

    都说汇编晦涩难懂,难以移植,所以逐渐被C替代,那么汇编可以编写操作系统么,实用性如何?
    发表于 10-18 07:25

    STM32嵌入式操作系统介绍

    的分配、任务调度,控制、协调并发活动。• 目前在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统FreeRTOS、µC/OS-II、RThread、WindowsCE、VxWorks 等等.
    发表于 09-28 06:59

    STM32嵌入式操作系统介绍

    的分配、任务调度,控制、协调并发活动。• 目前在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统FreeRTOS、µC/OS-II、RThread、WindowsCE、VxWorks 等等.
    发表于 09-11 07:24

    RT-Thread操作系统有哪些优势?

    软件包和SDK,扩展系统功能 开发者说,RT-Thread是最简洁,优雅的开源操作系统之一,简单易用。 RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面向对象的设
    发表于 06-28 08:16

    Rust语言系统编程(3)#操作系统

    操作系统
    学习硬声知识
    发布于 :2023年06月01日 13:51:50

    Rust语言系统编程(2)#操作系统

    操作系统
    学习硬声知识
    发布于 :2023年06月01日 13:51:09

    Rust语言系统编程(1)#操作系统

    操作系统
    学习硬声知识
    发布于 :2023年06月01日 13:50:27

    为什么不用Go开发操作系统

    操作系统 (OS) 是计算机系统的心脏和灵魂,它管理着计算机的硬件和软件资源,并为用户提供与计算机交互的方式。传统上,C 和 Assembly 等语言因其低开销和 “接近机器码” 的特性而被用于开发
    的头像 发表于 05-26 15:09 321次阅读
    为什么不用Go开发<b class='flag-5'>操作系统</b>?

    聊聊操作系统

    说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是android(安卓)和iOS系统
    的头像 发表于 05-12 11:13 1026次阅读
    聊聊<b class='flag-5'>操作系统</b>