一起学nRF51xx 22 -  实现一个具体SVC调用功能的demo

2023-11-11

前言

上一节《一起学nRF51xx 21 -  蓝牙项目工程的初始化流程解读》讲到nordic的蓝牙协议栈是通过SVC来实现APP与协议栈之间通接口调用的,那么如何来实现一个具体SVC调用功能的程序呢,本节将带大家解决这个问题。

示例详解

基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。

 

 

本示例所用的最小系统板原理图:

 

本节工程直接在《STM32 基础系列教程 15 - SPI》一节的工程基础上进行修自以改,大家可以去https://blog.csdn.net/zhanglifu3601881/article/details/89236537查看工程的创建步骤及下载工程源码:

 

    1. 工程代码
      1. 在startup_stm32f103xb.s中找到SVC_Handler程序入口,并按下图所示修改SVC_Handler函数:

 

同时在stm32f1xx_it.c中将函数 void SVC_Handler(void) 整个注释掉:

并在stm32f1xx_it.c中USER CODE BEGIN 1代码区加入如下代友:

C_SVC_Handler实现了对SVC服务号的解析与具体参数解析及对应功能代码执行。

 

 

 

 

最在在main.c中按下图编写代码:

 

    1. 编译OK,在程序中加入断点,仿真程序查看对应的结果

可以看到成功通过SVC调用产生了SVC中断,并在SVC中断中将正确的参数解析得到,并把参数内容写到TEST数组中:

 

文中源码资料下载,在公众号里给十三发消息:

下载|一起学nRF51xx 22

 

关注十三公众号

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一起学nRF51xx 22 -  实现一个具体SVC调用功能的demo 的相关文章

  • Qt中的字符串类QByteArray功能讲解

    得把这话写在前面 不要看到有很多东西都不会就学不下去了 事实上这些不是全部要装到脑子里的 尝试着用的时候就查 现阶段是入门 毕竟之前没接触过 不要心急 勇敢牛牛 字符串类型 c gt char c gt std string Qt gt Q

随机推荐

  • vtk表面提取参数研究

    marching cubes是三维图形处理中常见的算法 实际使用中 对一个影像数据做表面提取 然后平滑得到一个组织表面是一个常用功能 下面这段代码是参考3d slicer的分割流程的代码 boneExtractor vtkMarchingC
  • 【牛客网】OR63 删除公共字符串

    一 题目描述 牛客网题目链接 删除公共字符 牛客题霸 牛客网 描述 输入两个字符串 从第一字符串中删除第二个字符串中所有的字符 例如 输入 They are students 和 aeiou 则删除之后的第一个字符串变成 Thy r std
  • ML2 Plugin框架说明

    在H版本中 ML2 Plugin被添加意图取代所有的Core Plugin 它采用了更加灵活的结构进行实现 下图即为ML2 Plugin的实现框架 作为一个Core Plugin ML2自然会实现network subnet port三种核
  • SpringBoot入门到精通(十一):整合Swagger3.0-定制RESTful与统一接口返回值

    整合Swagger3 0 定制RESTful与统一接口返回值 一 整合Swagger3 0 随着Spring Boot Spring Cloud等微服务的流行 在微服务的设计下 小公司微服务工程jar小的几十个 大公司大的工程拆分jar多则
  • C到C++的升级

    前言 C到C 的升级 是一次很有利的升级 他从一个面向过程的语言走向了一个面向对象的语言 他是对C很多的优化 解决了C中存在的许多不合适的地方 他的两个加号 一个是增加了新的类型 一个是增加了面向对象 他是对效率的一种提升 C当时的设计主要
  • 如何进行性能分析

    一 性能分析的常用手段 1 空间换时间 利用内存缓存从磁盘上取出的数据 CPU可以直接访问内存 从而比从磁盘读取数据更高的效率 2 时间换空间 当空间成为瓶颈的时候 切开数据分批次处理 用更少空间完成任务的处理 3 分而治之 把任务切分 分
  • C++ 中的sort()排序函数原理、用法看这一篇就够了

    C 中的sort 排序函数原理 用法用法看这一篇就够了 sort first pointer first pointer n cmp 该函数可以给数组 或者链表list 向量排序 原理 sort并不是简单的快速排序 它对快速排序进行了优化
  • CT2A

    1 CString转为char char szAsciiIP 64 memcpy szAsciiIP CT2A m pEncoder gt m strIP sizeof szAsciiIP 2 详见MSDN http msdn micros
  • 异地远程访问本地SQL Server数据库【无公网IP内网穿透】

    iOS开发上架主页 在强者的眼中 没有最好 只有更好 我们是移动开发领域的优质创作者 同时也是阿里云专家博主 关注我们的主页 探索iOS开发的无限可能 我们与您分享最新的技术洞察和实战经验 助您在移动应用开发领域取得成功 欢迎访问我们的微信
  • CheckReturn(检查返回值)

    Loki库提供了一种方法 要求函数返回后 使用者必须对其进行检查或则赋值 以必须判断指针为例进行说明 自己写的代码简化了很多 CheckReturn h pragma once include
  • TSubclassOf

    在蓝图或C 层面调用SpawnActor创建一个actor对象 或者调用SpawnActorDeferred 延迟创建一个actor对象时 都需要一个class类型的参数 如果在C 层面 对象类型是我们自己在蓝图里做的蓝图类 那么C 层面需
  • 【智能优化算法】基于败者淘汰机制的烟花算法LOTFWA求解单目标烟花优化问题附matlab代码...

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 作为一种新兴的群体智能优化算法 烟花算法通过模拟烟花在空中爆炸产生火花的过程来进行最
  • 软件工程作业四

    2 用面向数据流的方法设计下列系统的软件结构 1 储蓄系统 参见习题2第2题
  • webpack学习4:热模替换、devtool、准备生产环境、清除打包文件目录

    热模替换功能 之前的webpack dev server是全部刷新 热模替换是局部刷新 详细配置见官网 指南 gt 模块热替换 修改devServer配置devServer contentBase resolve dirname build
  • Solr 实体嵌套

    公司主要测业务是 城市档案馆建设 一份案卷包含一个或多个业务实现 现在需要solr 索引库能够已经相关业务事项的 证号 单位 来进行相关功能检索 相关功能业务实现 以案卷为主表嵌套其他业务事项表 在solr的 data config xml
  • jmeter用循环控制器和计数器,直接查询数据库获取数据作为后续接口的参数

    一 导入mysql驱动jar包 二 添加线程组 jdbc配置文件 三 添加jdbc请求 设置参数变量 四 添加循环控制器 然后在其中加入计数器如下 五 用函数助手生成 V buyer code M 和 V buyer shortname N
  • 蓝桥杯JAVA B组 2022第四题 最少刷题数

    一 题目描述 二 思路分析 1 对输入的刷题数进行排序 2 分情况考虑 奇数情况下 超过中间值才能满足全班刷题比他多的学生数不超过刷题比他少的学生数 偶数情况下需要等于中间偏大的值就可以满足条件 三 代码 import java util
  • 西门子s300编程实例_plc西门子s300编程 西门子编程1000例

    西门子PLCS 200与S300 400系列编程电缆可以同意吗 西门子PLC S 200与S300 400系列编程电缆 如果是USB原装的 可以通用 价格2000元左右 西门子PLC S 200编程线型号PC PPI或者USB PPI 山寨
  • React 窗口防抖

    假如有这种需求 浏览器的窗口不断缩小变大 此时页面的布局不会自动刷新 需要手动刷新页面才会自适应大小 此时我们立马就会想到使用windows的onresize方法 window onresize gt 重新渲染画面 root render
  • 一起学nRF51xx 22 -  实现一个具体SVC调用功能的demo

    前言 上一节 一起学nRF51xx 21 蓝牙项目工程的初始化流程解读 讲到nordic的蓝牙协议栈是通过SVC来实现APP与协议栈之间通接口调用的 那么如何来实现一个具体SVC调用功能的程序呢 本节将带大家解决这个问题 示例详解 基于硬件