GD32VF103C8U6 解读

RISC-V 			Bumblebee  			GD32VF103C8U6

核心
	RISC-V 			Bumblebee  			GD32VF103C8U6
	32位处理器内核,工作频率为108MHz

时钟
	内置
		8Mhz
		40Khz
	外置
		3-25M
		32.768Khz

电源管理
	2.63.6 V
	几种节能模式为唤醒延迟和功耗之间的最大优化提供了灵活性,这在低功耗应用中尤为重要。

节电模式
	单片机支持三种节电模式,实现更低的功耗。它们是睡眠模式、深度睡眠模式和待机模式。这些操作模式降低了功耗,并允许应用程序在CPU操作时间、速度和功耗之间实现最佳平衡。

	睡眠模式
			在睡眠模式下,只有核心时钟关闭。所有外围设备继续运行,任何中断/事件都可以唤醒系统。
	深度睡眠模式
		在深度睡眠模式下,1.2V域中的所有时钟都关闭,IRC8M、HXTAL和PLL都被禁用。
		只保留SRAM和寄存器的内容。任何来自外部线路的中断或唤醒事件都可以将系统从深度睡眠模式唤醒,包括16条外部线路、RTC警报/时间戳/篡改、LVD输出、USB唤醒。
		退出深度睡眠模式时,选择IRC8M作为系统时钟。
	待机模式
		在待机模式下,整个1.2V域断电,LDO关闭,IRC8M、HXTAL和PLL全部禁用。
		SRAM和寄存器(备份寄存器除外)的内容丢失。
		待机模式有四个唤醒源,包括来自NRST pin的外部重置、RTC警报/时间戳/篡改、FWDGT重置和WKUP pin的上升沿。

存储
	闪存访问零等待状态 
	高达128 KB的片上闪存和32 KB的SRAM内存

	片上存储器
		高达128千字节的闪存
		32千字节的SRAM

	RISC-V处理器采用哈佛体系结构,可以使用单独的总线来获取指令和加载/存储数据。
	最多128kbytes的内部闪存和32kbytes的内部SRAM可用于存储程序和数据,两者都以CPU时钟速度访问(R/W),无等待状态。
	GD32VF103存储器映射显示GD32VF103系列设备的存储器映射,包括代码、SRAM、外围设备和其他预定义区域。


	启动模式
	启动时,引导管脚用于选择三个引导选项之一:
	从主闪存启动(默认)
	从系统内存引导
	从片上SRAM引导
	引导加载程序位于内部引导ROM内存(系统内存)中。
	它用于在设备模式下使用USART0(PA9和PA10)、USART1(PD5和PD6)、USBFS(PA9、PA11和PA12)重新编程闪存。
	它还可用于传输和更新闪存代码、数据和矢量表部分。

外设
	ADC
	DAC
	定时器
	SPI
	I2C
	USART
	I2S
	CAN
	USBFS
dma
	7通道DMA0控制器和5通道DMA1控制器
	每个通道都连接到固定硬件DMA请求。DMA信道请求的优先级由软件配置和硬件信道数决定。源和目标的传输大小是独立且可配置的。
	支持的外设:定时器、ADC、SPIs、I2Cs、USARTs、DAC、I2S
	支持三种访问方法:
		外设到存储器,存储器到外设,存储器到存储器
	
总线
	APB总线
	三条AHB总线,即I-Code、D-Code和系统总线。
	RISC-V处理器的所有内存访问都根据不同的目的和目标内存空间在三条总线上执行。
	内存组织使用哈佛架构、预定义的内存映射和高达4GB的内存空间,使系统具有灵活性和可扩展性。

中断控制器
	ECLIC // Enhancement Core-Local Interrupt Controller
	EXTI 

调试扩展
	高级调试支持

	支持标准JTAG调试接口和成熟的交互式调试工具GDB,最多支持四个硬件断点
	
	RISC-V核心不支持跟踪调试。
	硬件断点主要用于在只读部分(如Flash)设置断点。
代码

https://riscv-mcu.com/quickstart-quickstart-index-u-pdf-id-8.html
https://doc.nucleisys.com/nuclei_board_labs/labs/rvstar/level1/lab1_3.html
https://blog.csdn.net/weifengdq/article/details/102786466
https://blog.csdn.net/athieka/article/details/100895290
https://blog.csdn.net/weixin_41788560/article/details/104392380

代码地址

.lds

SECTIONS
{
  __stack_size = DEFINED(__stack_size) ? __stack_size : 1K;


  .init           :
  {
    KEEP (*(SORT_NONE(.init)))
  } >flash AT>flash 


  .text           :
  {
    *(.rodata .rodata.*)
    *(.text.unlikely .text.unlikely.*)
    *(.text.startup .text.startup.*)
    *(.text .text.*)
    *(.gnu.linkonce.t.*)
  } >flash AT>flash 

  .data          :
  {
    *(.rdata) 
   
    *(.gnu.linkonce.r.*)
    *(.data .data.*)
    *(.gnu.linkonce.d.*)
    . = ALIGN(8);
    PROVIDE( __global_pointer$ = . + 0x800); 
    *(.sdata .sdata.*)
    *(.gnu.linkonce.s.*)
    . = ALIGN(8);
    *(.srodata.cst16)
    *(.srodata.cst8)
    *(.srodata.cst4)
    *(.srodata.cst2)
    *(.srodata .srodata.*)
  } >ram AT>flash 

  .bss            :
  {
    *(.sbss*)
    *(.gnu.linkonce.sb.*)
    *(.bss .bss.*)
    *(.gnu.linkonce.b.*)
    *(COMMON)
    . = ALIGN(4);
  } >ram AT>ram 


  // 为什么这里有栈的分布

  .stack ORIGIN(ram) + LENGTH(ram) - __stack_size :
  {
    PROVIDE( _heap_end = . ); 
    . = __stack_size;  
    PROVIDE( _sp = . ); 
  } >ram AT>ram 

}


	

  • start.S

		.section .init
vector_base:
    j _start

_start:
	/* Jump to logical address first to ensure correct operation of RAM region  */
	/* Set the the NMI base to share with mtvec by setting CSR_MMISC_CTL */
	/* Intial the mtvt*/
	/* Intial the mtvt2 and enable it*/
	/* Intial the CSR MTVEC for the Trap ane NMI base addr*/
	/* Enable FPU */
	/* Load data section */
	/* Clear bss section */
	/*enable mcycle_minstret*/
	/* Call global constructors */
	call main

  • main.c
int main(void)
{
    /* system clocks configuration */
    rcu_config();
    /* GPIO configuration */
    gpio_config();
    /* TIMER configuration */
    timer_config();
    /* DMA configuration */
    dma_config();  
    /* ADC configuration */
    adc_config();

    /* enable TIMER1 */
    timer_enable(TIMER1);
  
    while(1){ 
    }
}
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值