CH32F103C8T6学习记录——8.1 使用寄存器点亮LED灯

参考章节:



一共添加: “ch32f10x.h” 、 “main.c” 、 “startup_ch32f10x.s” 三个文件


1. 程序

ch32f10x.h

/*本文件用于添加寄存器地址及结构体定义*/

/*片上外设基地址  */
#define PERIPH_BASE           ((unsigned int)0x40000000)

/*APB2 总线基地址 */
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
/* AHB总线基地址 */
#define AHBPERIPH_BASE        (PERIPH_BASE + 0x20000)

/*GPIOC外设基地址*/
#define GPIOC_BASE            (APB2PERIPH_BASE + 0x1000)

/* GPIOC寄存器地址,强制转换成指针 */
#define GPIO_CFGLR			*(unsigned int*)(GPIOC_BASE+0x00)
#define GPIO_CFGHR			*(unsigned int*)(GPIOC_BASE+0x04)
#define GPIOC_INDR			*(unsigned int*)(GPIOC_BASE+0x08)
#define GPIOC_OUTDR			*(unsigned int*)(GPIOC_BASE+0x0C)
#define GPIOC_BSHR	  *(unsigned int*)(GPIOC_BASE+0x10)
#define GPIOC_BCR			*(unsigned int*)(GPIOC_BASE+0x14)
#define GPIOC_LCKR		*(unsigned int*)(GPIOC_BASE+0x18)

/*RCC外设基地址*/
#define RCC_BASE      (AHBPERIPH_BASE + 0x1000)
/*RCC的AHB1时钟使能寄存器地址,强制转换成指针*/
#define RCC_APB2PCENR		 *(unsigned int*)(RCC_BASE+0x18)

main.c


/*
	*工程模板(寄存器版本)
  */
#include "ch32f10x.h" 


/**
  *   主函数
  */
int main(void)
{	
	// 开启GPIOC 端口时钟
	RCC_APB2PCENR |= (1<<4);

	//清空控制PC13的端口位
	GPIO_CFGHR &= ~( 0x0F<< (4*5));	
	// 配置PC13为通用推挽输出,速度为10M
	GPIO_CFGHR |= (1<<4*5);

	// PC13 输出 低电平
	GPIOC_OUTDR &= ~(1<<13);
	
	// PC13 输出 高电平
	//GPIOC_OUTDR |= ~(0<<13);
	
	while(1);
}



// 函数为空,目的是为了骗过编译器不报错
void SystemInit(void)
{	
}

/*********************************************END OF FILE**********************/


2. 与STM32F103C8T6的区别

  • 寄存器名略有差异但不影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值