十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
BL B的作用:1:让R14(LR)寄存器保存B下面的地址,作为返回地址
在平房等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都做网站 网站设计制作定制网站建设,公司网站建设,企业网站建设,成都品牌网站建设,网络营销推广,外贸网站制作,平房网站建设费用合理。2:跳转到B函数的地址中执行B函数代码
单纯的B指令,只会跳转而不会返回
LR保存返回地址:为什么不是E0或者E2而是取了一个中间值E1
可能需要额外学习关于ARM内核的知识了--任务:关于ARM-M3内核的学习
ARM-RISC<精简指令集>,R0-R11通用目的寄存器用来暂存数据
R13-SP R14-LR(保存返回地址)
R15-PC(用来存储指向下一条指令的地址,也即将将要执行的指令代码)
PSR-程序状态寄存器
指令种类:内存、运算、跳转、比较
裸机的编程思维:状态机思维--其实就是很好的利用switch语句配合,不同的情况执行不同的代码,一步一步的来,比如按键或者其他,这种思维需要想,目的的话:提高代码健壮性、可读性等,很有用
CPU从ROM中取指令,从RAM取数据,把数据暂时性保存在通用寄存器中,可以从ARM汇编的过程中可以很清除的看到此过程
学会在C语言中,使用C++的面向对象的思维 ,结构体封装-变量和函数
中断的要求:快进快出,一般不能放入一些函数,一般放标志位,但是有时候中断需要放一些紧急的任务,因此放标志位的都是不紧急的,比如按键扫描、获取传感器参数等
除时序以外,避免使用延时函数,一个使用延时函数的程序,是不完美的程序
任务优先级的设置的值不要太大,有些任务的优先级可以相等就相等,如果任务优先级过多,那么涉及到的抢占就会越多,抢占就会越多,保存的内容就越多(压栈)。因为可能当你执行A任务的时候,B来抢占了,B执行的时候,C又来抢占了,此时你就需要保存A\B的栈,假如继续呢?
如果是相等的优先级的话,抢占的机会就少了很多了
一个芯片的启动方式有很多,当你学习一种芯片的时候,不要形成固定思维,认为其他的芯片也是这样。当你学另外一种芯片的时候,你前面所学的内容只是参考,最终我们都是需要看数据手册的。我曾经犯的错误,我学的芯片存在定时器3,然后我去玩了另外一个芯片,最后发现定时器3配置不成功,最后才发现,原来这个芯片连定时器3都没用
学习不能形成固定思维,前面的学习内容只是参考而已
你需要学会STM32库和FreeRTOS对C语言的高级使用 -结构体、枚举、指针等用法
以及HAL库函数的实现里面都包含着很多C语言的高级用法
写代码能力 = 逻辑 + 基础 + 调试
写一部分,调试一部分,把大功能分成一个一个小小的函数
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧