
STM32F1C8T6-HAL库
文章平均质量分 93
STM32F1C8T6-HAL库
菜鸟-01
这个作者很懒,什么都没留下…
展开
-
20:HAL--RNG
F1系列的没有RNG,使用本次说的都是F407的,我使用的是STM32F407VET6。STM32F407VET6不需要,单独配置时钟。伪随机数就是rand函数产生的数。按键我们采用的为电容按键。原创 2024-09-07 18:46:54 · 424 阅读 · 0 评论 -
19:HAL—-DAC
F1,F4,F7的DAC框架图都一样。触发源:宏定义补全及解释解释请注意,对于的注释中提到的TIM3可能是一个错误,因为根据宏定义中的位操作,它实际上对应的是TIM5的TRGO(假设和分别对应于选择触发源的位字段)。此外,实际上并不直接对应于任何定时器的TRGO,而是直接由软件触发(即位被设置),这与相同,但通常的命名更直接地表达了其意图。原创 2024-09-07 14:51:47 · 956 阅读 · 0 评论 -
18:HAL--DMA
STM32F407VET6 : DMA的资源有--DMA1,DMA2。DMA1:挂载在APB1上面----42MHZDMA2:挂载在APB2上面----84MHZ。原创 2024-09-05 17:19:31 · 1069 阅读 · 0 评论 -
17:低功耗篇(PWR)---HAL库
也可以是使能到中断,但是没有配置NVIC , 调用WFE进入的睡眠模式 ,产生唤醒事件时,会立刻醒来 , 醒来之后,一般不需要进中断函数 , 直接从睡的地方继续运行。-------- 你程序刚上电,是72MHz的主频 , 但是进入停止模式,再唤醒之后 , 就变成8MHz的主频了;: WFI--------任何外设发生任何中断时,芯片都会立刻醒来 , 因为中断发生了,所以醒来之后的第一件事一般就是处理中断函数,处理完中断, 直接从睡的地方继续运行。原创 2024-07-15 03:27:19 · 1414 阅读 · 0 评论 -
16:RTC---HAL库
必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器--------其实这个操作在库函数中, 每个写奇存器的函数, 它都自动帮我们加上了这个操作, 所以我们就不用再单独调用代码,进入配置模式了。对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。时钟输出, 可以把RTC的相关时钟, 从PC13位置的RTC引脚输出出去,供外部使用, 其中,输出校准时钟时, 再配合这个校准寄存器,可以对RTC的误差进行校准。原创 2024-07-13 15:06:59 · 1360 阅读 · 0 评论 -
00:HAL库的认识
该文件夹存放的是ST官方的开发板的适配例程,每个文件夹对应一个ST官方的Demo板,根据型号的不同提供MDK和IAR等类型的例程。: \STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device" 和 \STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Include"文件夹复制到下面。stm32f103xb.h:我们使用的为,stm32F1C8T6的FLASH为64K,为中容量的,使用我们选择:这个文件。我们使用的是STM32F103C8t6的这个。原创 2024-07-10 15:31:59 · 1182 阅读 · 0 评论 -
15:HAL----ADC模数转化器
ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间输入电压范围:0~3.3V,转换结果范围:0~409518个输入通道,可测量16个外部(GPIO)和2个内部信号源(内部温度传感器和内部参考电压)规则组和注入组两个转换单元模拟看门狗自动监测输入电压范围 STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道。原创 2024-06-13 10:55:43 · 731 阅读 · 0 评论 -
14:HAL---CRC校验
CRC(Cyclic Redundancy Check),即循环冗余校验,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。原创 2024-05-11 18:56:47 · 1373 阅读 · 0 评论 -
13:HAL---SPI
-------------Flash并没有像RAM那样的, 直接完全覆盖改写的能力. eg:在某一个直接的储存单元首先储存了0xaa 1010 1010 在储存0x55 0101 0101 因为Flash没有直接覆盖数据的能力, 在加上第二条规定的限制实际储存的数据为: 0000 0000 不是0x55, 使用在写入第二给数据前必须擦除之前的数据。在SS为低电平时,MISO才允许变为推挽输出----------------不能指定某一个字节去擦除, 要擦,就得一大片一起擦, 在我们这个芯片里;原创 2024-05-09 18:14:55 · 864 阅读 · 0 评论 -
12:HAL----I2C
解决上面遗留的BUG点,为了方便我们只在这里只做主机从机2的//发送DMA//接收///通信速率1//7位寻址模式//开启事件中断//复用开漏输出//MDA通道6配置--发送数据//传输方向:内存(数组)--->外设//内存数据宽度//存储区地址自增//外设数据宽度//外设地址不自增//优先级//双向链接//MDA通道7配置---接收数据//传输方向:外设 ---> 内存(数组)//内存数据宽度//存储区地址自增。原创 2024-04-28 17:58:26 · 1605 阅读 · 0 评论 -
10:HAL---高级定时器
在我们普通的定时器中当CNT=CCR时直接发生溢出。然而我们的高级定时器多了一个重复计数器。原创 2024-04-20 16:02:26 · 1573 阅读 · 0 评论 -
06:HAL----定时器
TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 (计数器、预分频器、自动重装寄存器构成时基单元)不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。原创 2024-04-20 15:01:48 · 2556 阅读 · 0 评论 -
09:HAL--通用定时器编码器接口
编码器接口,都是上升沿和下降沿都有效的 , 上升沿和下降沿都需要计次 , 所以在编码器接口模式下 , 边沿检测极性选择就不再是边沿的极性选择了 , 而是高低电平的极性选择.之前的代码是通过触发外部中断 , 然后在中断函数里手动进行计次-----见02:STM32--EXTI外部中断。选择下升沿的参数-------就是信号通过一个非门过来,高低电平极性反转----5:极性反转。选择上升沿的参数------就是信号直通过来,高低电平极性不反转---5:极性不反转。上面的2个模式--只在一个计数。原创 2024-04-20 15:00:46 · 1411 阅读 · 0 评论 -
11:HAL--定时器代码总结
DMA循环方式,每次传输4次数据第一次定时1s,第二次定时2s,第三次定时3s,第四次定时4s第五次定时5s,第六次定时2s,第七次定时3s,第八次定时4s第九次定时5s,第十次定时2s,往复循环。捕获中断不会打开更新中断,HAL_TIM_IC_Start_IT()中不会打开更新中断,所以需要我们手动打开: __HAL_TIM_ENABLE_IT(&HandleTIM4CH1,TIM_IT_UPDATE);当我们按键按下,首先发生触发和更新中断,把我们的CNT和预分频器值置为0,保证了起始值为0,原创 2024-04-20 14:56:45 · 881 阅读 · 0 评论 -
08:HAL---通用定时器功能(输入捕获功能)
下面的以通用定时器为例,当然高级定时器具有通用定时器的全部功能ICP1S:上面经过分频后的信号;这里的捕获指的是产生一个捕获事件。原创 2024-03-31 17:53:27 · 2827 阅读 · 0 评论 -
07:HAL------通用定时器功能(输出比较PWM)
下面的以通用定时器为例,当然高级定时器具有通用定时器的全部功能灰色部分为我们的输入捕获部分,下节说舵机是一种根据输入PWM信号占空比来控制输出角度的装置输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms高电平宽度=某电频的持续时间CCR=高电频舵机的控制一般需要一个20ms的时基脉冲(周期),该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度舵机为例,那么对应的控制关系是这样的:0.5ms--------------0度;原创 2024-03-30 23:10:13 · 1699 阅读 · 0 评论 -
05:HAL-----看门狗WDT
上面这个预分频j寄存器IWDG PR, 可以配置分频系数, 这个PR和定时器的PSC (//预分频器PSC) 是一个意思 -----------------开始 : A :这个时钟源是PCLK1(36MHz)---------B: 先经过一个预分频器进行分频 , 这个和独立看门狗的预分频器,定时器的预分频器相同---------C: 分频之后的时钟,驱动这个计数器进行计数(6位递减计数器)...........如果在计数器计数结束前,若软件没有向键寄存器写入相应的值,则系统会产生复位。原创 2024-03-25 15:39:04 · 1426 阅读 · 1 评论 -
04:HAL----串口通信UART
通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统通信协议:制定通信的规则,通信双方按照协议规则进行数据收发TX: 发送数据的引脚RX :接收数据的引脚I2C通信:SCL: 时钟SDA:数据SPI通信:SCLK:时钟MOSl:主机输出数据脚MISO: 主机输入数据脚CS: 片选,用于指定通信的对象CAN通信:是差分数据脚,用两个引脚表示一个差分数据USB通信:也是 是差分数据脚双工全双工:就是指通信双方能够同时进行双向通信, 两个数据线分别负责发送和接收数据半双工。原创 2024-03-17 17:43:41 · 2850 阅读 · 6 评论 -
03:HAL---中断
正转-----B相下降沿和A相低由平时同时满足时;反转----在A相下降沿和B相低电频同时满足时;不管有几个中断我们,我们自己写的中断服务函数和处理中断的函数不要我们定义,在HAL库中已经定义了。//注意名字要中断相同//中断处理函数;原创 2024-03-08 17:43:57 · 2341 阅读 · 0 评论 -
01:HAL库---时钟
我们使用的是STM32F103CT86的型号时钟在在我们的单片机中非常重要,相当于我们的人类的心脏;简单来说,时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波;三种不同的时钟源可被用来驱动系统时钟(SYSCLK)● HSI振荡器时钟● HSE振荡器时钟● PLL时钟这些设备有以下2种二级时钟源:● 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机待机模式下自动唤醒系统。低速外部晶体也可用来通过程序选择驱动。原创 2024-03-05 17:49:00 · 2377 阅读 · 0 评论 -
02:HAL库---GPIO
一组有16个IO口PA0~PA15;PB0~PB15介绍GPIO相关的寄存器;原创 2024-03-05 17:31:55 · 2827 阅读 · 0 评论