stm32f10x单片机寄存器初探,使用寄存器点亮LED

需要的资源有 stm32f10x开发板一块  stm32中文参考手册

 

首先我们来了解一下单片机的启动文件,根据单片机大小的不同需要选择不同的启动文件

stm32f10x单片机寄存器初探,使用寄存器点亮LED_第1张图片

 

1.好的我们现在来新建一个工程文件

stm32f10x单片机寄存器初探,使用寄存器点亮LED_第2张图片

 

 

 2.接下来进入单片机选择界面  在这个界面选择的需要在st官方网站下载才可以,如果没有的话请前往下载。

这里我选择的是zet6 大容量的芯片,这个根据您的实际情况来选择。

stm32f10x单片机寄存器初探,使用寄存器点亮LED_第3张图片

下面我们得到的就是一个空的工程文件里面什么都没有,现在我们来添加内容

stm32f10x单片机寄存器初探,使用寄存器点亮LED_第4张图片

我们要在这个文件下面复制我们需要的启动文件到工程里面,在添加进去。在文件添加好了过后就可以进行程序的编写了

main.c   使其PB.5端口闪烁

#include "stm32f10x.h"


void delay10ms(int w)
{  
   unsigned char i,j,k;
   for(i=w;i>0;i--)
      for(j=4;j>0;j--)
        for(k=248;k>0;k--); 
}

void  main(void)
{
	//配置系统时钟
	*(unsigned int *)0x40021018 |=(1<<3);//配置PB端口时钟
	
	
	//配置为PB.5端口输出
	*(unsigned int *)0X40010C00 |=(3<<(4*5));//ODR寄存器
	
	//PB.5端口输出低电平
	*(unsigned int *)0X40010C0C &=~(1<<5);//ODR寄存器
	
	while(1)
	{
		//PB.5端口输出低电平
	  *(unsigned int *)0X40010C0C &=~(1<<5);//ODR寄存器
		delay10ms(200);
		
		//PB.5端口输出高电平
	  *(unsigned int *)0X40010C0C |=(1<<5);//ODR寄存器
		delay10ms(200);
	}
	
	//置位  |=   //就是让其中一位变为1从而不影响其他的位
	
	//清零  &~=  //就是让其中一位清零从而不影响其他的位
}




//这个函数为空的话就是没有配置时钟
//单片机就采用内部8MHZ的时钟
void SystemInit()//这个是一个时钟配置函数
{
	//骗编译器
}








 第一个我们要了解的就是RCC时钟使能寄存器,在使用之前我们要知道PB这个时钟是挂载在那条时钟总线上面的。

下图我们了解到了 PB端口是在  APB2这个总线上面的接下来,我们就找到  6.3.7 APB2外设时钟使能寄存器(RCC_APB2ENR)先使能时钟。  PB的地址是  0X4001 0C00

 

stm32f10x单片机寄存器初探,使用寄存器点亮LED_第5张图片

 

找到过后我们要看一下它的地址已经偏移量,  通过下图我们可以了解到它的偏移地址是0x18 , PB在第3的位, 为0时关闭时钟为1时使能时钟。 我们已经知道RCC的地址是  0x4002 1000,

接下来写程序的时候就已经把地址确定了,地址就是   0x40021000+0x18=0x40021018

知道它的地址了我们就可以来写程序了    

*(unsigned int *)0x40021018 |=(1<<3);//配置PB端口时钟

这里这样定义就直接把这里变为地址量在左移3位置1配置就完成了,接下来PB.5的输出配置以及输出高低电平的配置都可以参考这个方法来做就可以了。

 

stm32f10x单片机寄存器初探,使用寄存器点亮LED_第6张图片

你可能感兴趣的:(stm32单片机)