32单片机,C语言与汇编联合编译的几种方式
适用编译器:Keil5
方式一:
单独创建一个.s汇编文件,在汇编文件内对函数进行EXPORT声明
r0寄存器是函数传入的第一个参数,r1寄存器是函数传入的第二个参数,以次类推。参数最多不确定是到r4为止,还是到r12,可自行研究。
PRESERVE8THUMBAREA |.text|, CODE, READONLYALIGNEXPORT switch_value
switch_value PROCLDR r2, [r0]STR r2, [r1]BX LRENDPALIGNEND
在.c文件内,对汇编函数再次声明,需要对参数类型进行补充
void switch_value(uint32_t * a,uint32_t * b);
int main(void)
{uint32_t la=0x55,lb=0;Debug_UartCfg();while(1){delay_ms(500);switch_value(&la,lb);debug_printf("hello,0x%x!\r\n",lb);}
}
方式二:
在c语言代码中内联汇编代码,在这种方式下好像是不能使用[r0],[r1]这种方式获取参数了,编译器会报错,需要使用[参数1],[参数2]这种方式。
void switch_value(uint32_t * a,uint32_t * b)
{__ASM volatile("LDR r2, [a]");__ASM volatile("STR r2, [b]");
}
其他方式:
暂未确定看到网上有
__asm void switch_value(uint32_t * a,uint32_t * b)这种写法的,但是在keil下会报错,感兴趣的可以自行查阅keil help菜单下的c手册,对__asm语法有详细说明。
相关文章:
32单片机,C语言与汇编联合编译的几种方式
适用编译器:Keil5 方式一: 单独创建一个.s汇编文件,在汇编文件内对函数进行EXPORT声明 r0寄存器是函数传入的第一个参数,r1寄存器是函数传入的第二个参数,以次类推。参数最多不确定是到r4为止,还是到r12…...
基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM
基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM 1.数据均为Excel数据,直接替换数据就可以运行程序。 2.所有程序都经过验证,保证程序可以运行。 3.具有良好的编程习惯,程序均包含简要注释。 获取方式 https:/…...
自动控制:反馈控制
自动控制:反馈控制 反馈控制(Feedback Control)是一种在控制系统中通过测量输出信号,并将其与期望信号进行比较,产生误差信号,再根据误差信号调整输入来达到控制目标的方法。反馈控制是自动控制系统中最常…...
sqlite 数据库 介绍
文章目录 前言一、什么是 SQLite ?二、语法三、SQLite 场景四、磁盘文件 前言 下载 目前已经出到了, Version 3.46.0 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是…...
【机器学习】机器学习重塑广告营销:精准触达,高效转化的未来之路
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 📒1. 引言📙2. 机器学习基础与广告营销的结合🧩机器学习在广告营销中的核心应用领域🌹用…...
常见的Java运行时异常
常见的Java运行时异常 1、ArithmeticException(算术异常)2、ClassCastException (类转换异常)3、IllegalArgumentException (非法参数异常)4、IndexOutOfBoundsException (下标越界异常…...
CANoe的capl调用Qt制作的dll
闲谈 因为Qt封装了很多个人感觉很好用的库,所以一直想通过CAPL去调用Qt实现一些功能,但是一直没机会(网络上也没看到这方面的教程),这次自己用了两天,踩了很多坑,终于是做成了一个初步的调用方…...
论如何搭建属于自己的服务器?
在现如今的数字化时代中,为了能够搭建网站和运行应用程序,很多人选择搭建属于自己的服务器,下面我们就来了解一下如何搭建服务器吧! 搭建服务器我们首先需要选择适合自身需求的硬件设备,其中包含内存、CPU和存储等配置…...
【C++ OpenCV】机器视觉-二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算
原图 结果图 //包含头文件 #include <opencv2/opencv.hpp>//命名空间 using namespace cv; using namespace std;//全局函数声明部分//我的腐蚀运算 Mat Erode(Mat src, Mat Mask, uint32_t x0, uint32_t y0) {uint32_t x 0, y 0;Mat dst(src.rows, src.cols, CV_8U…...
STMF4学习笔记RTC(天空星)
前言:本篇笔记参考嘉立创文档,连接放在最后 #RTC相关概念定义 Real-Time Clock 缩写 RTC 翻译 实时时钟,是单片机片内外设的一种,作用于提供准确的时间还有日期,这个外设有独立的电源,当单片机停止供电…...
vue数组变化的侦测***
数组变化的侦测 变更方法 vue能够侦听响应式数组的变更方法,并在他们被调用时触发相关更新。这些变更方法包括: push()pop()shift()unshift()splice()sort()reverse() 替换一个数组 变更方法,顾名思义,就是会对调用他们的原数组进…...
k8s-第十节-Ingress
Ingress 介绍 Ingress 为外部访问集群提供了一个 统一 入口,避免了对外暴露集群端口;功能类似 Nginx,可以根据域名、路径把请求转发到不同的 Service。可以配置 https 跟 LoadBalancer 有什么区别? LoadBalancer 需要对外暴露…...
webrtc gcc详解
webrtc的gcc算法(Google Congestion Control),貌似国内很多文章都没有细讲,原理是怎么样的,具体怎么进行计算的。这里详解一下gcc。 gcc算法,主要涉及到: 拥塞控制的关键信息和公式 卡曼滤波算法 gcc如何使用卡曼滤…...
Linux多进程和多线程(七)进程间通信-信号量
进程间通信之信号量 资源竞争 多个进程竞争同一资源时,会发生资源竞争。 资源竞争会导致进程的执行出现不可预测的结果。 临界资源 不允许同时有多个进程访问的资源, 包括硬件资源 (CPU、内存、存储器以及其他外 围设备) 与软件资源(共享代码段、共享数据结构) …...
【项目日记(一)】梦幻笔耕-数据层实现
❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多项目内容 目录 1.前言2.后端模块3数据库设计4.mapper实现4.1UserInfoMapper4.2BlogMapper 5.总结 1.…...
ElementUI的中国省市区级联数据插件element-china-area-data
安装 npm install element-china-area-data -S import 使用 import {provinceAndCityData,pcTextArr,regionData,pcaTextArr,codeToText, } from "element-china-area-data"; provinceAndCityData省市二级联动数据,汉字+coderegionData省市区三级联动数据pcTextAr…...
Kotlin算法:把一个整数向上取值为最接近的2的幂指数值
Kotlin算法:把一个整数向上取值为最接近的2的幂指数值 import kotlin.math.ln import kotlin.math.powfun main(args: Array<String>) {val number intArrayOf(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)number.forEach {println("$…...
简单且循序渐进地查找软件中Bug的实用方法
“Bug”这个词常常让许多开发者感到头疼。即使是经验丰富、技术娴熟的开发人员在开发过程中也难以避免遭遇到 Bug。 软件中的故障会让程序员感到挫败。我相信在你的软件开发生涯中,也曾遇到过一些难以排查的问题。软件中的错误可能会导致项目无法按时交付。因此&…...
基于springboot+vue+uniapp的高校宿舍信息管理系统小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...
(完整音频)DockerHub、OpenAI、GitCode,脱钩时代,我们该如何自处?
本期主播 朱峰:「津津乐道播客网络」创始人,产品及技术专家。(微博:zhufengme)高春辉:「科技乱炖」主播。“中国互联网站长第一人”,科技、互联网领域的连续创业者。(微博࿱…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...
无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技
无需布线的革命:电力载波技术赋能楼宇自控系统 在楼宇自动化领域,传统控制系统依赖复杂的专用通信线路,不仅施工成本高昂,后期维护和扩展也极为不便。电力载波技术(PLC)的突破性应用,彻底改变了…...
Linux 内存管理调试分析:ftrace、perf、crash 的系统化使用
Linux 内存管理调试分析:ftrace、perf、crash 的系统化使用 Linux 内核内存管理是构成整个内核性能和系统稳定性的基础,但这一子系统结构复杂,常常有设置失败、性能展示不良、OOM 杀进程等问题。要分析这些问题,需要一套工具化、…...
