1、  STM32当中的EXIT外部触发中断寄存器一般适用于由外部事件触发引起的中断,而NVIC则是包含所有中断(老大哥)位置处于内部,包含定时器计数器等等的中断。两个比较容易模糊的概念——抢占优先级和响应优先级,涉及的场景多为带有多个中断事件,中断的循环嵌套,抢占优先级(设置中断优先级),响应优先级(当两个中断源优先级相同时的仲裁)。

2、  定时计数器和51类似也是通过时钟脉冲来进行计数,32可以进行对来的时钟信号进行分频——PSC预分频器,并且32的计数方式是0——自动重装载寄存器(你设置的值)就溢出。STM32公司已经写好了RCC配置的基本时钟函数system_init所以如果采用的是内部时钟的化各定时器的时钟频率一般为72MHZ

2.1、STM32的定时器的计算公式

  上述公式计算的分母都要+1(是因为0不能分母0),这也就导致你在实际给配置的参数时存在1的偏差,比如你想配置PSC不分频,会很自然而然的给参数配1,实际是写0即可,所以在配置参数时都需-1.

  定时时间的计算: 采用内部时钟想让定时器定时1s,则让计数器溢出频率1HZ(T=1/1HZ),PSC=7200,ARR=10000,若想定时5s(f=1/5=0.2HZ),PSC=7200,ARR=10000.

3、外设的GPIO配置可以通过查表来选择相应的端口模式

                  GPIO_Mode_AIN ———————- 模拟输入
                  GPIO_Mode_IN_FLOATING ——– 输入浮空
                  GPIO_Mode_IPD ———————- 输入下拉
                  GPIO_Mode_IPU  ———————- 输入上拉
                  GPIO_Mode_Out_OD —————- 开漏输出
                  GPIO_Mode_Out_PP —————- 推挽式输出
                  GPIO_Mode_AF_OD —————- 开漏复用功能
                  GPIO_Mode_AF_PP —————– 推挽式复用功能

4、HEX数据包文本数据包

        Background:传输数据时通常是以字节为单位,一个一个收发,但实际运用中通常几个字节才代表一份特定的数据,所以需要将离散字节的数据打包成一份数据包。例如,有一份关于姿态传感器的数据,通常一个字节的数据包含x轴信息,一个字节的数据包含y轴的信息,一个字节的数据包含z轴的信息,通常需要这三个字节的数据进行整合也就是数据的打包。方便接受双方的识别,具体的数据包的分割方法可以发挥想象。

串口通信通常是通过添加包头、包尾来构成数据包,固定包长通常适用于数据信息可能于包头、包尾有重叠,而可变包长则适用于数据信息与包头、包尾没有冲突的情况下。

        

HEX数据包

          优点是,传输最直接,解析数据简单,比较适合一些模块发送原始的数据(比如一些使用串口通信的陀螺仪、温湿度传感器)。

           缺点就是灵活性不足、载荷容易和包头包尾重复        

文本数据包

        优点是,数据直观易理解,比较适合一些输入指令进行人机交互的场合,比如蓝牙指令的at。

        缺点是解析效率低。

  如何在程序当中实现,关键点在于在中断函数添加必要的if判断语句来确定是否是你规定的数据包形式,是则接收,否则不接收。收完一个完整的数据包一定要在置为相应标志位,将数据解耦出来,方便在主程序里面进行操作。

作者:believe_zi_ji

物联沃分享整理
物联沃-IOTWORD物联网 » 关于STM32的知识记事本

发表回复