[应用相关] stm32f10x单片机寄存器初探,使用寄存器点亮LED

[复制链接]
 楼主| 自动化陈稳 发表于 2021-4-26 17:52 | 显示全部楼层 |阅读模式

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


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

2434360868d3ead7dd.png



 楼主| 自动化陈稳 发表于 2021-4-26 17:53 | 显示全部楼层
1.好的我们现在来新建一个工程文件
9651360868d5a1d7fd.png
 楼主| 自动化陈稳 发表于 2021-4-26 17:54 | 显示全部楼层
2.接下来进入单片机选择界面  在这个界面选择的需要在st官方网站下载才可以,如果没有的话请前往下载。
这里我选择的是zet6 大容量的芯片,这个根据您的实际情况来选择。
 楼主| 自动化陈稳 发表于 2021-4-26 21:44 | 显示全部楼层
 楼主| 自动化陈稳 发表于 2021-4-26 21:49 | 显示全部楼层
下面我们得到的就是一个空的工程文件里面什么都没有,现在我们来添加内容
 楼主| 自动化陈稳 发表于 2021-4-26 21:53 | 显示全部楼层
 楼主| 自动化陈稳 发表于 2021-4-26 21:54 | 显示全部楼层
我们要在这个文件下面复制我们需要的启动文件到工程里面,在添加进去。在文件添加好了过后就可以进行程序的编写了

main.c   使其PB.5端口闪烁
 楼主| 自动化陈稳 发表于 2021-4-26 21:56 | 显示全部楼层
  1. #include "stm32f10x.h"


  2. void delay10ms(int w)
  3. {  
  4.    unsigned char i,j,k;
  5.    for(i=w;i>0;i--)
  6.       for(j=4;j>0;j--)
  7.         for(k=248;k>0;k--);
  8. }

  9. void  main(void)
  10. {
  11.         //配置系统时钟
  12.         *(unsigned int *)0x40021018 |=(1<<3);//配置PB端口时钟
  13.        
  14.        
  15.         //配置为PB.5端口输出
  16.         *(unsigned int *)0X40010C00 |=(3<<(4*5));//ODR寄存器
  17.        
  18.         //PB.5端口输出低电平
  19.         *(unsigned int *)0X40010C0C &=~(1<<5);//ODR寄存器
  20.        
  21.         while(1)
  22.         {
  23.                 //PB.5端口输出低电平
  24.           *(unsigned int *)0X40010C0C &=~(1<<5);//ODR寄存器
  25.                 delay10ms(200);
  26.                
  27.                 //PB.5端口输出高电平
  28.           *(unsigned int *)0X40010C0C |=(1<<5);//ODR寄存器
  29.                 delay10ms(200);
  30.         }
  31.        
  32.         //置位  |=   //就是让其中一位变为1从而不影响其他的位
  33.        
  34.         //清零  &~=  //就是让其中一位清零从而不影响其他的位
  35. }




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








 楼主| 自动化陈稳 发表于 2021-4-26 21:58 | 显示全部楼层
第一个我们要了解的就是RCC时钟使能寄存器,在使用之前我们要知道PB这个时钟是挂载在那条时钟总线上面的。
 楼主| 自动化陈稳 发表于 2021-4-26 22:01 | 显示全部楼层
下图我们了解到了 PB端口是在  APB2这个总线上面的接下来,我们就找到  6.3.7 APB2外设时钟使能寄存器(RCC_APB2ENR)先使能时钟。  PB的地址是  0X4001 0C00

 楼主| 自动化陈稳 发表于 2021-4-26 22:02 | 显示全部楼层
 楼主| 自动化陈稳 发表于 2021-4-26 22:02 | 显示全部楼层
找到过后我们要看一下它的地址已经偏移量,  通过下图我们可以了解到它的偏移地址是0x18 , PB在第3的位, 为0时关闭时钟为1时使能时钟。 我们已经知道RCC的地址是  0x4002 1000,

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

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

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

这里这样定义就直接把这里变为地址量在左移3位置1配置就完成了,接下来PB.5的输出配置以及输出高低电平的配置都可以参考这个方法来做就可以了。
 楼主| 自动化陈稳 发表于 2021-4-26 22:03 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

1379

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部