目录
EXIT外部中断
SysTick(系统定时器)
系统定时器配置步骤
关键字 volatile
DMA
多个DMA请求一起来,怎么办/p>
I2C协议
软件模拟协议
硬件实现协议
oxgen注释/p>
Browse Infomation
C语言中的作用
EXIT外部中断
EXIT外部中断步骤
1)使能IO口时钟,初始化IO口为输入。
2)使能SYSCFG时钟,设置IO口与中断线的映射关系。(SYSCFG_EXTILineConfig())
3)初始化线上中断,设置触发条件等。(exit_init())
4)配置中断分组(NVIC),并使能中断。
5)编写中断服务函数。(编写函数名称的时候,请往启动文件的 External Interrupts里)
SysTick(系统定时器)
SysTick也叫滴答定时器,它是一个24位的只能递减的定时器。存在于内核当中,嵌套在NVI众女,所有的Cortex_M内核的单片机都有这个定时器。
STM32F103系统定时器_吹沙拾金的博客-CSDN博客
这位博客主上有关于滴答定时器相关寄存器的详解。
系统定时器配置步骤
1.调用SysTick_Config()函数确定多久发生一次中断。
2.编写延时函数
3.再system_stm32f4xx.c文件的SysTick_Handler函数中编写代码,让延时函数里的TimingDelay变量减减。
滴答定时器的函数里SysTick_LOAD_RELOAD_Msk变量跳不过之后的0xFFFFFFUL中的UL表示无符 长整形。
这个函数是个升级版,可以一看,理解思路。
关键字 volatile
变量使用volatile修饰:告诉编译器,该变量随时会发生改变,买每使用该变量直接到内存中去取,而不是采用暂存再寄存器中的值。
通信
Bitrate —比特率:每秒钟传输的二进制位数,单位为比特每秒(bit/s);
Baudrate—波特率:表示每秒钟传输的码元个数。
在一个二进制表示一个码元的情况下Bitrate == Baudrate,两个二进制位表示一个码元Bitrate != Baudrate
串口的USART_BRR寄存器,有涉及到小数转二进制,以前没这么了解过,可以看看。
USART
串口通信的步骤:
1.初始化时钟(串口时钟和GPIO时钟)
2.初始化引脚(记得设为复用功能)
3.串口引脚复用配置(GPIO_PinAFConfig())
4.串口初始化
5.中断配置(NVCI_init();和优先级)
6串口使能(按需求使能串口的接收中断USART_ITConfig())
DMA
DMA:Data Memory Access,直接存储访问。,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存了存取数据的数据交换模式。PIO模式下硬盘和内存之间的数据传输是由CPU来控制的;而在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率。DMA模式与PIO模式的区别就在于,DMA模式不过分依赖CPU,可以大大节省系统资源,二者在传输速度上的差异并不十分明显。DMA模式又可以分为Single-Word DMA(单字节DMA)和Multi-Word DMA(多字节DMA)两种
野火的STM32f407具有DMA1和DMA2.
流:是数据传输的一条链路,每个DMA控制器有8条独立的数据流,每次传输的数据量最大为65535,如果数据的单位为字的话,那一次可以传输256KB。
通道:每个数据流有8个通道选择,每个通道对应不同的DMA请求。
多个DMA请求一起来,怎么办/strong>
1.软件阶段,DMA_SxCR:PL
2.硬件阶段,数据流编 小的优先级大。
同一个数据流只能使用一个通道,同一个DMA控制器可以使用多个数据流。
FIFO:源和目标之间的一个数据中转站。
每个数据流有4个字FIFO,阈值级别有1/4,1/2.3/4或满。DMA_SxFCR:FTH.在开启FIFO模式的时候,直接模式要禁止。
I2C协议
I2C通讯协议(Inter-Integrated Circuit)是由飞利浦(Philips)公司开发的,由于它的引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等腾讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。
总线:支持多个设备共用的信 线。
一个主机多从机,每个连接到总线的设备都有一个独立的地址,主机通过地址来进行不同设备的访问。
总线通过上拉电阻接到电源,当I2C设备空闲时,会输高阻态,而当所有设备都空闲,全输出高阻态时,由上拉电阻把总线拉成高电平。
高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定的。
三种传输模式:标准模式传输速率为100Kbit/s,和快速模式为400kbit/s,告诉模式下可达3.4Mbit/s.
I2C的地址由7位的数据为控制,最大值不超过2的8次方,也就是128.
连接到相同总线的IC数量受到总线的最大电容400pF限制。
发送完数据后,一定要把SDA总线拉高,释放控制权。
软件模拟协议
使用CPU直接控制通讯引脚的电平,产生出符合腾讯协议的标准的逻辑。
硬件实现协议
由于STM32的I2C片上外设专门负责实现I2C通讯协议,只要配置 该外设,它就会自动根据协议要求产生通讯信 ,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据的收发。
brief 简介 param 参数 retval 返回值
这种注释方式称为doxgen注释。
Doxygen 是一个程序的文件产生工具,可将程序中的特定注释转换成为说明文件。通常我们在写程序时,或多或少都会写上注释,但是对于其它人而言,要直接探索程序里的注释,与打捞泰坦尼克 同样的辛苦。大部分有用的注释都是属于针对函数、类型等等的说明。所以,如果能依据程序本身的结构,将注释经过处理重新整理成为一个纯粹的参考手册,对于后面利用您的程序代码的人而言将会减少许多的负担。不过,反过来说,整理文件的工作对于您来说,就是沉重的负担。
Browse Infomation
这个选项在编译前记得勾上,它可以让我们在编译后按下F12或右击鼠标即可跳到函数相关内容。
C语言中的作用
1、#define的宏
宏定义是以“”换行,如:#define MAX(a,b) ((a) <(b) (b) : (a))
2、关键字的换行
关键字换行支持:(+ – * / % = , | & ^ ~ || && == !=)以及括 等,均能作为换行符 。
3、字符串的换行
换行的字符串最后,添加双引 ,下一行开头也加上双引 就可以。
如:char buf[128]; strcpy(buf, “1234567890ab ” “cdefg “);
上述示例等同于:char buf[128]; strcpy(buf, “1234567890abcdefg “);
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!