摘要:
下面再次给出CH32V003的中断和异常的向量表。 从表中可以看到,从编号16~38的23个中断均为外设中断,其余4个为内核中断。 这里需要再说明一下事件与中断的区别: 事件表示检测到某一动作触发事件发生了,而中断则表示有某个事件发生并产生中断,然后会跳转到对应的中断处理程序中去执行。中断有可能被更 阅读全文
摘要:
CH32V003芯片是以青稞V2为内核的处理器,青稞V2 微处理器内部设计了一个可编程快速中断控制器(Programmable Fast Interrupt Controller,PFIC)可管理异常在内的最多256个中断。其中前16 个固定为微处理器内部中断,其余为外部中断,即最大支持扩展240个 阅读全文
摘要:
在CH32V003内部有一个特殊的定时器——系统定时器(SysTick),它位于青稞V2微处理内核里面,是RISC-V内核的一个组成部分,主要用来给操作系统提供时间片轮转的定时,一般固定为10ms的定时,所以中文也称它为“嘀嗒”定时器(也称“心跳”定时器)。在不跑操作系统时,可以把它当作普通定时器来 阅读全文
摘要:
GPIO端口是处理器与外部设备打交道的基础,为了更好地应用它,下面就对CH32V003的通用输入输出端口(GPIO)的寄存器结构及用法做详细深入地讨论。CH32V003是一个32位的处理器,但它的GPIO端口并不是把32个引脚都引出来,而是根据芯片型号及其封装的不同,分别引出来了18个(CH32V0 阅读全文
摘要:
要让CH32V003正常工作,首先要对它的时钟源进行配置。CH32V003的最高工作频率为48MHz,因此给它的主时钟频率最大不能超过48MHz。实际上,通常会使用频率较低的晶振,以降低外部电磁干扰,然后再通过内部倍频的方式把主时钟频率提高。根据管方手册给出的数据,外部晶振的频率范围是4~25MHz 阅读全文
摘要:
在MRS的头文件core_riscv.h中有如下的定义。 #define __I volatile const #define __O volatile #define __IO volatile 上述定义,通过define语句把__IO等效为volatile,把__O等效为volatile,把__ 阅读全文
摘要:
在MRS的默认配置中,在main函数执行之前,就已经执行了时钟的初始化配置程序,这部分程序被放在了一个名为system_ch32v00x.c的文件中,这个文件默认被加载到MRS的User目录下(可双击打开它)。在该文件中,最重要的一个函数就是SystemInit,它负责系统的初始化工作,其代码如下所 阅读全文
摘要:
MRS是MounRiver工作室采用开源项目Eclipse制作的一款易于使用的开发工具,它几乎是为WCH系列芯片量身定制的,相对于其他一些开发环境,它具有编译速度快,使用简洁方便,支持多种平台等特点,可访问MounRiver的官网(www.mounriver.com)下载最新版本。 MRS的安装可全 阅读全文
摘要:
CH32V003是南京沁恒微电子股份有限公司推出的一颗工业级通用微控制器芯片(单片机)。它基于32位RISC-V指令集及架构设计,采用该公司自主开发的青稞V2A(QingKeV2)内核,基于RV32EC指令集,具有2级流水线,支持2级中断嵌套,支持2级硬件堆栈。支持48MHz系统主频,具有宽压(3. 阅读全文
摘要:
继续来看I2C中断使能设置及读取寄存器INTENSET,下表是它的全部位结构,其地址分别为0x40050008 (I2C0),0x40054008 (I2C1),0x40070008 (I2C2)和0x40074008 (I2C3))。 (1)第0位(MSTPENDINGEN)为主机挂起中断使能位。 阅读全文