news 2026/6/22 23:35:34

GD32C103RBT6 misc 内核驱动库极简解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GD32C103RBT6 misc 内核驱动库极简解析

一、概述

gd32c10x_misc.c是 GD32C10x 固件库的内核杂项驱动,直接操作 Cortex‑M3 内核寄存器,实现三大功能:

  1. NVIC 中断优先级分组、中断开关
  2. 向量表重映射
  3. 低功耗模式、SysTick 时钟源配置所有外设中断配置都依赖本文件,使用频率极高。

二、核心函数说明

1.nvic_priority_group_set()

设置中断优先级分组(抢占优先级 + 子优先级)

  • 常用:NVIC_PRIGROUP_PRE2_SUB2(2 位抢占 + 2 位子优先级,默认)
  • 整个工程只调用一次,放在main最开头

2.nvic_irq_enable()

开启指定中断并配置优先级

  • 参数:中断号、抢占优先级、子优先级
  • 优先级数值越小,优先级越高

3.nvic_irq_disable()

关闭指定中断

4.nvic_vector_table_set()

向量表重映射(FLASH/RAM,IAP 升级常用)

5.system_lowpower_set / reset()

设置 / 清除睡眠、深度睡眠低功耗模式

6.systick_clksource_set()

配置 SysTick 时钟源:HCLK 或 HCLK/8

三、例程

#include "gd32c10x_misc.h"

int main(void)
{
// 1. 设置中断分组
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);

// 2. 开启外部中断0,抢占优先级1,子优先级0
nvic_irq_enable(EXTI0_IRQn, 1, 0);

// 3. SysTick时钟源配置
systick_clksource_set(SYSTICK_CLKSOURCE_HCLK_DIV8);

while(1)
{
}
}

// EXTI0中断服务函数
void EXTI0_IRQHandler(void)
{
if(exti_interrupt_flag_get(EXTI_0) != RESET)
{
exti_interrupt_flag_clear(EXTI_0);
// 中断业务逻辑
}
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 9:24:19

基于555定时器的电荷泵倍压电路设计与实践

1. 项目概述:用555定时器搭建一个简易倍压电路最近在折腾一个需要小电流、稍高电压的场合,比如给某些老式运放供电,或者驱动一个高压LED阵列。手头只有一块5V的USB电源,电压不够用,又不想为了这点需求去搞一个笨重的开…

作者头像 李华
网站建设 2026/6/22 23:34:18

UE5 GAS实战:用GameplayEffect堆叠机制,复刻LOL武器大师被动与火男爆炸效果

UE5 GAS实战:用GameplayEffect堆叠机制复刻LOL经典技能 在动作游戏开发中,角色技能的动态叠加效果往往是战斗系统的灵魂所在。《英雄联盟》中武器大师行云流水的攻速成长、火男令人窒息的烈焰爆发,这些经典机制背后都离不开精妙的堆叠逻辑设计…

作者头像 李华
网站建设 2026/5/20 9:23:12

SDR-RDMA架构:动态可编程的跨数据中心通信优化方案

1. SDR-RDMA架构概述在分布式计算领域,远程直接内存访问(RDMA)技术因其低延迟、高吞吐的特性,已成为跨数据中心通信的基础设施。然而传统RDMA协议在设计时主要面向局域网环境,当扩展到行星级规模(如跨大陆数…

作者头像 李华
网站建设 2026/5/20 9:19:11

不只是定位:教你用开源GNSS/INS平台玩转多传感器融合与抗干扰

不只是定位:开源GNSS/INS平台的多传感器融合与抗干扰实战指南 在自动驾驶、无人机和机器人领域,精准的定位与导航系统是核心竞争力的体现。传统单一GNSS系统在城市峡谷、电磁干扰等复杂环境下表现往往不尽如人意,而单纯依赖惯性导航系统(INS)…

作者头像 李华