参考章节:
一共添加: “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的区别
- 寄存器名略有差异但不影响