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
航顺芯片产品有哪些 航顺家族介绍
仓库之中如何使用物联网等技术
二十大未来最有潜力的新材料
美格智能5G技术加速5G行业商用进程之稳定性!
安卓和iOS哪个最安全
STM32操作系统系列使用C语言的教程
MRAM芯片相比于其它存储器的优势是什么
怎样防止24V短路造成的电路板烧坏
五分钟了解沃尔沃Drive-E动力总成
网易上线区块链游戏导航_为玩家“挖”出好游戏
第三台RomeEPYC超算将采用AMDRomeEPYC处理器 总计大约20万个核心
人工智能通过虚拟智能与群智能 将满足更丰富的应用场景
激光三角测量法3D锡膏印刷质量如何检测
世强元件电商深圳国际嵌入式系统展 带全面的测试测量仪器
功率放大器的增益指什么?
中国手机厂商指控爱立信滥用市场支配地位收取过高的授权许可费
英飞凌计划关闭慕尼黑150毫米晶圆厂,出售给X-Fab
骨感蓝牙耳机什么品牌的好?骨感耳机最好的品牌推荐
PCB电源供电系统设计可能遇到的技术挑战?
TPA2050D4 模拟输入音频子系统 集成立体声D类功率放