
题目起跟上一篇很接近啊。本文主要说的就是安全区的代码怎么去操作非安全区的资源。 安全区可以操作非安全区资源,安全区可以调用非安全区的代码。 工程设置跟上一个一样,还是俩小灯,PH6属于非安全区资源,PH7属于安全区资源。 ![]() 首先我们试一下直接操作寄存器,接着上次的程序来。 这次程序是非安全区调用安全区代码,然后安全区代码操作非安全区的小灯,嗯,听起来很绕。 非安全区 main函数里
安全区代码
编译下载,红灯开始正常闪烁。 一切正常。 接下来是安全区代码调用非安全区函数,好像有点怪,如果安全区代码调用非安全区代码,同时非安全区代码也调用安全区代码,是不是就出现互相依赖的问题了?所以它并不是直接调用的函数,因为安全区代码对非安全区所有的资源都有操作权限,那我就直接操作地址就好了啊,直接访问非安全区代码的地址,调用它(实际使用中还需要点修饰)。接着刚才的程序。 非安全区
非安全区 main函数里
创建一个操作小灯的代码,并编译到0x8101000地址上。 安全区代码
就是调用了非安全区的程序,嗯,这是一个非安全区代码调用安全区代码,然后安全区代码调用非安全区代码,然后通过操作非安全区程序控制小灯,嗯,绕口令越来越熟练了。 编译下载,红灯开始正常闪烁。 funcptr_NS 是ST给我们提供的一个定义好的接口,不光上面一种写法。 善良守序
绝对中立
混乱邪恶
全展开确实太刺激了点,哈哈。 |
学习学习 |
学习学习 |
不错,学习学习 |
学习学习,大神很牛 |
善良守序、绝对中立、混乱邪恶 期待你的展开 |
打卡打卡 |
很绕 得多看几遍 |
学习了,很详细。感谢! |
确实让人有点绕和混乱啊,要实际操作理解一下。 |
绕晕了,要实际操作才更清晰 |
想赶快使用ST新推出这款STM32U5系列产品,学习学习![]() |