创建寄存器的项目模板相对比较简单,这里是基于库文件的模板进行更改的,有不明白的小伙伴可以浏览STM32新建模板之库文件

一、项目文件

  1. 拷贝库文件的工程模板重命名为“stm32f10x_register”

  2. 删除STM32F10x_FWLib文件

  3. 删除CMSIS中不要的文件,保留startup、core_cm3.h、stm32f10x.h文件

  4. 删除USER中不要的文件,保留main.c文件,其余的全部删除,并创建sys.c和sys.h文件

二、创建工程项目

  1. 打开Keil软件,创建项目,项目名为STM32F10x_Temp





  2. 添加GROUP,添加两个个GROUP,并改名为startup、USER





  3. 为每个GROUP添加文件

  • startup,将文件startup_stm32f10x_hd.s添加到startup下

  • USER,将文件main.c、sys.c文件添加到USER下

  • 添加完成后如下图所示:

  1. 设置编译文件的输出路径





  2. 设置默认编译版本

  3. 设置头文件路径

三、程序修改

  1. 修改startup_stm32f10x_hd.s



    将图中的内容更改后如下图所示:

  2. sys.c文件

#include "stm32f10x.h"

#define uint unsigned int
#define uchar unsigned char #define CLOCK 72/8 //时钟=72M /*------------------------------------------------------------
us延时函数
------------------------------------------------------------*/
void delay_us(unsigned int us)
{
u8 n;
while(us--)for(n=0;n<CLOCK;n++);
} /*------------------------------------------------------------
ms延时函数
------------------------------------------------------------*/
void delay_ms(unsigned int ms)
{
while(ms--)delay_us(1000);
} /*------------------------------------------------------------
把所有时钟寄存器复位
------------------------------------------------------------*/
void RCC_DeInit(void)
{
RCC->APB2RSTR = 0x00000000;//外设复位
RCC->APB1RSTR = 0x00000000;
RCC->AHBENR = 0x00000014; //flash时钟,闪存时钟使能.DMA时钟关闭
RCC->APB2ENR = 0x00000000; //外设时钟关闭.
RCC->APB1ENR = 0x00000000;
RCC->CR |= 0x00000001; //使能内部高速时钟HSION
RCC->CFGR &= 0xF8FF0000; //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]
RCC->CR &= 0xFEF6FFFF; //复位HSEON,CSSON,PLLON
RCC->CR &= 0xFFFBFFFF; //复位HSEBYP
RCC->CFGR &= 0xFF80FFFF; //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE
RCC->CIR = 0x00000000; //关闭所有中断
} /*------------------------------------------------------------
外部8M,则得到72M的系统时钟
------------------------------------------------------------*/
void Stm32_Clock_Init(void)
{
unsigned char temp=0;
u8 timeout=0;
RCC_DeInit();
RCC->CR|=0x00010000; //外部高速时钟使能HSEON timeout=0;
while(!(RCC->CR>>17)&&timeout<200)timeout++;//等待外部时钟就绪 //0-24M 等待0;24-48M 等待1;48-72M等待2;(非常重要!)
FLASH->ACR|=0x32;//FLASH 2个延时周期 RCC->CFGR|=0X001D2400;//APB1/2=DIV2;AHB=DIV1;PLL=9*CLK;HSE作为PLL时钟源
RCC->CR|=0x01000000; //PLLON timeout=0;
while(!(RCC->CR>>25)&&timeout<200)timeout++;//等待PLL锁定 RCC->CFGR|=0x00000002;//PLL作为系统时钟
while(temp!=0x02&&timeout<200) //等待PLL作为系统时钟设置成功
{
temp=RCC->CFGR>>2;
timeout++;
temp&=0x03;
}
}
  1. sys.h文件
#ifndef __SYS_H
#define __SYS_H //us延时函数
void delay_us(unsigned int us);
//ms延时函数
void delay_ms(unsigned int ms);
//把所有时钟寄存器复位
void RCC_DeInit(void);
//外部8M,则得到72M的系统时钟
void Stm32_Clock_Init(void); #endif
  1. main.c文件
#include "stm32f10x.h"
#include "sys.h" /*------------------------------------------------------------
主函数
------------------------------------------------------------*/
int main()
{ Stm32_Clock_Init();//系统时钟设置
RCC->APB2ENR |= 0x00000001; //开启afio时钟
//AFIO->MAPR = (0x00FFFFFF & AFIO->MAPR)|0x04000000; //关闭JTAG RCC->APB2ENR|=0X0000001c;//先使能外设IO PORTa,b,c时钟 GPIOB->CRH=0X33333333; //推挽输出
GPIOB->CRL=0X33333333; //推挽输出 while (1)
{
delay_ms(1000);
GPIOB->ODR=0; //全部输出0 delay_ms(1000);
GPIOB->ODR=0xffffffff; //全部输出1 }
}

四、编译下载

  1. 编译程序

  2. 通过isp下载程序

  3. 下载完成后,可以看到LED灯会进行闪烁则说明项目创建成功,到此寄存器板的工程模板比库文件的创建简单。

STM32新建模板之寄存器的更多相关文章

  1. STM32新建模板之库文件

    一.新建项目文件夹 在桌面创建项目文件夹,用于存放工程,命名为"stm32f10x_project" 在项目文件夹中创建3个文件夹,分别命名为:CMSIS.OUTPUT.STM32 ...

  2. Discuz3.3精仿小米风格整站模板制作——1、新建模板方案

    术语说明: 模板——模板是一堆按照规定命名方式的html文件,用于指定整个论坛不同页面的外观. 标签——标签和模板共同作用以实现论坛换肤功能,其中标签主要控制页面显示什么数据,显示多少条等. 风格—— ...

  3. phpcms新建模板页教程

    phpcms新建模板页教程1 直接去template文件夹里的复制的模板页 比方说list1.html2 去后台 界面模板风格 default 默认模板 点击详情列表 找到list1.htm 设置中文 ...

  4. STM32入门系列-创建寄存器模板

    介绍如何使用 KEIL5 软件创建寄存器模板, 方便之后使用寄存器方式来操作STM32开发板上的LED,让大家创建属于自己的寄存器工程模板. 获取工程模板的基础文件 首先我们在电脑任意位置创建一个文件 ...

  5. stm32的hall库新建模板编译错误: #error "Please select first the target STM32F1xx device used in your application (in stm32f1xx.h file)"的处理

    在stm32f1xx.h file文件中找到如下代码: /* Uncomment the line below according to the target STM32L device used i ...

  6. STM32的操作过程,寄存器配置与调试过程(转载)

    很多学习stm32的,为什么学习stm32他也不知道,我们所知道的就是各个论坛讨论stm32的很多,而我们很多人之所以学习stm32是很多的淘宝卖家做了大量的图片文字宣传,于是我们经不住诱惑就买了板子 ...

  7. 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  8. Pycharm新建模板默认添加作者时间等信息

    在pycharm使用过程中,对于每次新建文件的shebang行和关于代码编写者的一些个人信息快捷填写,使用模板的方式比较方便. 方法如下: 1.打开pycharm,选择File-Settings 2. ...

  9. VS2017自定义新建模板

    今天测试了一下用自定义的模板新建C++模板,结果出了一些问题,不过已经解决了,现在把经验分享出来. 1. 首先可以先自定义一个以后经常用的模板,例如下面这个. 2.   项目   下找到    导出模 ...

随机推荐

  1. 创建项目文件(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 按照张同学和董同学的说法,创建项目文件首选是利用可以参照的项目计划模板,如果找不到,那就利用现有的项目文件,实在这些都没有 ...

  2. 录入任务信息(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 日历设置好了,就该录入任务了.当然在录入任务之前还要对任务进行一下面分解,就是一个项目,要分几个大步完成,每个大步又分几个 ...

  3. PLSQL Developer 13安装教程

    1:双击安装包进行安装.点击"next".2:点击"w accept the termis..."同意条款,并点击"next",进行下一步. ...

  4. 从K8S部署示例进一步理解容器化编排技术的强大

    概念 Kubernetes,也称为K8s,生产级别的容器编排系统,是一个用于自动化部署.扩展和管理容器化应用程序的开源系统.K8s是一个go语言开发,docker也是go语言开发,可见go语言的是未来 ...

  5. AT1445 乱数生成 题解

    Description 有一个机器会等概率从 \(1\) 到 \(n\) 的正整数中选出一个整数.显然地,这个机器运行 \(3\) 次后会得到 \(3\) 个整数.求这 \(3\) 个整数的中位数是 ...

  6. 我的邮箱客户端程序Popmail

    05年的时候写了一个邮箱客户端程序.当时主要目的是研究POP3和SMTP协议,同时锻炼自己的网络编程能力.当然了,如果自己写的邮箱客户端能够满足自身的日常工作需要,而不是频繁的登录不同的网页邮箱,那就 ...

  7. java 多线程 读写互斥锁ReentrantReadWriteLock:读读不互斥,读写互斥,写写互斥

    ReentrantReadWriteLock: 类ReentrantLock具有相互互斥的排他效果,也就是说,同一时间,只有一个线程执行lock()方法后面的任务.这样做虽然可以解决问题,但是效率非常 ...

  8. Simple16 字符压缩

    #define S16_NUMSIZE 16 #define S16_BITSSIZE 28 #define Simple16_Mask 0x7FFFFFFF extern int S16_NUM[] ...

  9. 【LeetCode】963. Minimum Area Rectangle II 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 线段长+线段中心+字典 日期 题目地址:https: ...

  10. 【LeetCode】441. Arranging Coins 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 模拟计算 二分查找 数学公式 日期 题目地址:htt ...