此内容仅供自己方便学习和回顾,内容来源于野火指南者开发板教程。
一.SysTick系统定时器
SysTick系统定时器:24bit的向下递减的计数器,每次计数时间为 1/SYSCLK,当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,如此反复。
SysTick的4个寄存器:对应位的功能可以查STM32F10x-中文参考手册
利用SysTick产生1s的时基,LED以1s的频率闪烁
程序思路:
1.设置重装载寄存器的值
2.清楚当前数值寄存器的值
3.配置控制与状态寄存器
SysTick配置库函数:
这里的中断优先级是15,那怎么和外设的中断优先级比较呢?
假设一个外设的中断优先级分组为2,抢占优先级为1,子优先级也为1,systick的优先级为默认的15.先把systick的优先级15转化为二进制1111,又因为NVIC的优先级分组为2,那么二进制前两位和后两位都是11也就是3,systick抢占和子优先级都比外设的优先级低。(优先级的数越低优先级越高!)
SysTick_Config(uint32_t ticks)参数的计算:
因为SysTick定时器的计数器是向下递减计数,计数一次时间T1=1 / CLK,当重装载寄存器的值VALUE减到0时,产生中断,中断的时间T= VALUE * T1。其中CLK=72MHZ,VALUE就是我们要设定的值。
us级定时:
ms级定时:只改了重装载值
二.通讯知识
串行通讯:同一时刻只能传输一个数据位的数据
并行通讯:同时传输多个数据为的数据
由数据通讯的方向分为全双工、半双工和单工通讯(特点如下):
同步通讯和异步通讯:区别是否有时钟信号
同步通讯:
异步通讯:
比特率:每秒钟传输的二进制位数,单位是比特每秒(bit/s)
波特率:每秒传输了多少个码元
当0V表示数字0,5V表示数字1,一个码元就可以表示两种状态0和1,所以一个码元等一个二进制比特位,即波特率的大小等于比特率。
当0V、2V、4V、6V表示二进制数00、01、10、11,那么每个码元可以表示4种状态,即两个二进制比特位,所以码元数是二进制比特数的一半,这时波特率等于比特率的一半。传了2个二进制等于传一个码元。
重:比特率 = 波特率 * (一个符号)几位
或 比特率 = 波特率 * log2(N) 备注:N等于有多少种离散值即2^(几位)