单片机自学笔记

基本概念

上拉电阻是用来解决总线驱动能力不足时提供电流的。一般说法是上拉增大电流,下拉电阻是用来吸收电流。

复位就是恢复到初始化的状态。

使能:able,使能够   失能:enable,使它不能

IRQ:中断请求,简单理解,当电脑读取光盘资料时,当读取完毕后,硬盘就通知系统相应数据已经读取到内存中,来请求中断。

缺省值:缺省值就是默认值。是指一个属性、参数在被修改前的初始值。计算机软件系统要求用户输入某些值而用户未给定时,系统自动赋予的事先设定的数值

上升沿:数字电路中,从低电平0变为高电平1的那一瞬间

下降沿同理。

 

1、stm32f10x_conf.h”中定义如下:

#define _GPIO

#define _GPIOA

#define _GPIOB

#define _GPIOC

#define _GPIOD

要用哪一个,就先定义所用管脚。

GPIO:通用端口输入输出的意思

一、GPIO_INIT

      GPIO_InitTypeDef GPIO_InitStructure;

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;选中管脚,见原理图上面的ABCDEFG,要用哪一个模块,就看模块和核心板的哪一个接口相连,这里选择的也就是那个接口

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

选择传输速度,有10.20.50选择

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

选择输入输出方式,有四种输入和四种输出方式

GPIO_Init(GPIOA, &GPIO_InitStructure),指针是指只想structure,给它设定初始化的值

二、1GPIO_ReadInputData,读取指定GPIO端口输入值

       u8 ReadValue;定义ReadValue

ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);,在原理图上面找到对应端口

       2GPIO_ReadOutputData读取指定GPIO端口输出值

       u16 ReadValue;

ReadValue = GPIO_ReadOutputData(GPIOC)

   三、GPIO_setbits:控制输出高电平

       GPIO_resetbits:控制输出低电平

       GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15),一次可以对多个IO口进行设置

       GPIO_writebits:一次对一个IO口进行写操作,可以置1或者0,例:

           GPIO_writebit(GPIOA, GPIO_Pin_10 ,0)

       GPIO_write:向指定端口写入数据,

          GPIO_Write(GPIOA, 0x1101);0x1101是一个16进制数,转化为2进制数后可以看出效果。)

       GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1)锁定

          A外设的第零个端口,在下次系统复位之前不能更改端口位的设置

 

 

四、定时器相关知识

例:普通定时器模块为72MHz,分频系数(分配比)为7199

    要得到一个一秒钟的定时。

  F=72MHZ/(7299+1)=10KHZ,

  T=1/F,

  要得到一秒钟,需要设定10000

1、通用定时器

   通过向上、向下或者向上向下双向计数,到达一定范围就溢出来产生中断,从而达到定时的效果。

向上计数模式:从0开始计数到预先设定的一个值

向下计数模式:从预先设定的一个值向下计数直到0

中央对齐模式:从0开始计数到设定的值减一,再从这个值向下计数直到0

    发生下列事件时中断:

    寄存器计数的时候有一个范围,如果超出这个范围,寄存器就会溢出,定时器就会中断

     计数器启动、停止、初始化等

     2、中断

        是指cpu执行当前程序时,由于紧急情况,暂时中止当前程序而跳转到其他程序的执行。

         有可能在同一时间,同时发生多个中断请求,,这时就要根据优先级来决定谁先中断,谁后中断。具有高抢占式优先级的中断可以在低抢占式优先级中断处理过程中被响应

         定时器中断:

          外设向CPU发出申请——CPU如果同意——执行中断

         服务程序

介绍简单的系统滴答定时器——systick

为系统提供一个精准时基,为硬件电路提供一个中断操作,它是一个24位的定时器,一次最多能够计数224次方个脉冲,每接收一个脉冲,从保存的那个数值开始减一,当减为0时,就产生中断,

五、#define _NVIC,用到NVIC寄存器时先定义

  1、函数 NVIC_DeInit

将外设NVIC寄存器重设为缺省值,就是为了让缺省值在中间重新初始化

     NVIC_DeInit();

   2NVIC_SCBDeInit

     将外设SCB寄存器重设为缺省值

     NVIC_SCBDeInit();

   3、函数 NVIC_PriorityGroupConfig

    设置优先级分组:先占优先级和从优先级,在中断的时侯就是根据优先级处理的。        

     先占优先级:比如在执行一个优先级为10的中断,来了一个优先级为5的中断,那么就会停止执行10的中断,转而执行5的中断,

     从优先级:来了两个中断需要同时执行,先执行优先级高的中断,如果已经开始执行一个中断,即使来了一个优先级更高的中断,也不会转而执行那个中断

NVIC_PriorityGroup_0     先占优先级0位、从优先级4

                 1               1             3  

                 2               2             2

                 3               3             1

                 4               4             0   

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

先占优先级为0位,它的优先级就只有0.从优先级为4位,它的优先级就分为0~2^4一共16种情况

  4、函数 NVIC_Init

      根据指定的参数初始化外设NVIC寄存器  

  5NVIC_IRQChannel

用以使能或者失能相应的IRQ,NVIC可以改为其它参数,来指代什么中断

   6、函数 NVIC_StructInit

用以把NVIC_Structlnit的参数按照缺省值输入

   7、函数 NVIC_SETPRIMASK

      使能 PRIMASK 优先级:提升执行优先级至 0

   8、 函数 NVIC_RESETPRIMASK

       失能 PRIMASK 优先级

   9、函数 NVIC_SETFAULTMASK

        使能FAULTMASK,提升执行优先级至-1

 

六、1AFIO_EVCR

时间控制寄存器,总共有32位,

31:8----保留,

7EVOE:允许事件输出(event output enable),只有设置了该位后,才会连接端口选择和引脚选择位

6:4,端口选择,ABCDE,分别对应000 001 010 011 100

3:0,引脚选择,0--15,分别对应0000  0001  0010  0011  

0100  0101  0110  0111  1000  1001  1010  1011  1100

1101  1110  1111

等等

七、具体编写程序时相关文件夹的作用。

    user文件夹:存放用户应用程序和中断文件,如main.c

cmsis:存放内核和系统相关代码,系统配置代码

Fwlib:存放stm32标准外设的驱动代码

Startup文件夹:cortex—内核相关启动代码

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值