stm32f1-杂散类笔记
2018-04-10 14:05
106 查看
1.位带操作
把1bit扩展到32bit,实现位操作//SRAM 位带区: 0X2000 0000~0X2010 0000
//SRAM 位带别名区:0X2200 0000~0X23FF FFFF
//外设 位带区: 0X4000 0000~0X4010 0000
//外设 位带别名区:0X4200 0000~0X43FF FFFF
// 把“位带地址+位序号”转换成别名地址的宏 , <<5 等于*8*4, <<2 等于*4
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr & 0x00FFFFFF)<<5)+(bitnum<<2))
// 把一个地址转换成一个指针
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
// 把位带别名区地址转换成指针
#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
2.启动文件startup_stm32f10x_hd.s
a.首先标记了栈,堆得大小,属性和对齐b.标记向量表,里面存放着中断函数的地址
c.Reset_Handle标号处,也是程序启动,里面导入了systemInit和__main函数并调用,systemInit中设置了时钟,在__main中会调用用户的main函数
d.定义了中断服务函数,并且是weak类型,用户可以在程序中重复定义一个同名的
e.判断是否定义了__microlib,做堆栈初始化
3.systick
系统定时器是cm3内核中的外设,通常用作系统的心跳,24bit的向下递减4.比特率于波特率的区别
比特率是每秒传输多少位,波特率是每秒钟传输了多少个码元, 而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通讯传输中,
用 0V 表示数字 0, 5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元
等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有 0V、
2V、 4V 以及 6V 分别表示二进制数 00、 01、 10、 11,那么每个码元可以表示四种状态,即
两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的
一半。因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示
比特率,虽然严格来说没什么错误,但希望您能了解它们的区别 。
相关文章推荐
- 串口实验_STM32F1开发指南_第九章——串口学习笔记
- USB虚拟串口实验_STM32F1开发指南_第五十三章——USB学习笔记
- RT-Thread 基于STM32F1xx HAL 库的学习笔记(1)---加入HAL库
- RT-Thread 基于STM32F1xx HAL 库的学习笔记(2)---加入pin功能支持
- kubernetes 学习笔记4
- 使用Java语言进行2D游戏编程基础 Fundamental 2D Game Programming with Java 全书笔记(未完结)
- Java笔记9:Spring简单Demo
- ActionBarSherlock学习笔记 第一篇——部署
- go语言笔记——指针,和C用法以及本质一样,但不支持指针的+-运算!
- Oracle笔记:用户、权限及exp/imp数据
- 20170612初学笔记之python+linux
- 《JavaScript设计模式与开发》笔记 6.高阶函数
- 2012-10-31笔记
- Oracle OCP笔记(18)并发与锁
- 0008算法笔记——【分治法】循环赛事日程表
- 我的linux操作笔记
- node.js学习笔记之常用模块介绍
- R Markdown 使用方法笔记
- 笨方法学python,练习笔记