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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zhanglifu3601881/article/details/101173307

前言

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

示例详解

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

 

 

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

 

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

扫描二维码关注公众号,回复: 7648489 查看本文章

 

    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

 

关注十三公众号

 

猜你喜欢

转载自blog.csdn.net/zhanglifu3601881/article/details/101173307
今日推荐