STM32F108的学习
第一节
LED的注意事项
- 需要连接电阻,不然可能击穿LED。
- 一般LED所需电流为0~10+的毫安【不要超过20mA】,芯片所提供电压为3.3 or 5v,所以接一个1kΩ电阻【限流电阻】即可。
- 高电平、低电平。低电平时电路的阻抗低,噪声造成的电平变化小,也就是说,抗干扰能力更强
第二节
GPIO的注意事项
- 除了GPIO的为通用
, 其余皆为复用
2. GPIO大部分使用推挽输出,ⅡC使用的开漏输出。
3. 地址=基址+偏移地址
4. 端口配置寄存器【输入输出配置(模拟、浮空、上拉下拉、保留)(通用推挽、通用开漏、复用推挽、复用开漏),输入输出模式以及频率】–>端口输出数据寄存器(配置端口地址为1的是输出端口)
第四节
- AHB 高速总线、APB普通外设总结、
- 通过APB为GPIO提供RCC时钟源,才可以使外设与CPU连接。
- volatile 避免从缓冲区取值,只能从寄存器中取值。
第七节
- 使用结构体可以定义连续的的相关配置,因为结构体中遍历在内存中是连续的。
- 使用STM32官方库需要引入相关文件。
第八节 按键控制
- 利用按键进行控制led时,可以利用内部的上拉电位,以此输入高电平,按键后输入低电平,以此控制LED
第九节呼吸灯
- 有两种方式,一种是通过修改平均电平,第二种是通过修改PWM
第十一节NVIC
- 从优先级(响应优先级),在抢占优先级相同时谁的高谁优先。
2. 事件请求:当前事件完成后跳转到中断向量表。中断请求:立刻跳转到中断向量表。
3. 需要考虑到pin复用。时钟和中断。
4. 外部中断EXTI0的配置包括:向量化中断控制器的配置、PA0配置为外部中断、中断工作模式(下降沿检测)
第十三节SysTick 最后一个异常
- SysTick是系统内部计时器,CorTex-M3内包含。其是一个24位的计时器,基本模式是从一个reload 值递减,为0时触发异常,然后重新计数。
- 多久减一可以通过CLKSOURCE来设置,AHB为告诉外部时钟,为72MHZ。频率=1/时钟,所以时钟越大,精度越高。
3. 产生一次异常时间的设置。
第十四节
- 延时函数
第十五节
- stm32 有两个看门狗,一个独立看门狗,一个窗口看门狗
2. 独立看门狗(IWDG)依赖LSI(低速内部时钟),即使晶振,外部时钟不工作,IWDG依旧正常工作
3. WWDG依赖APB1,所以APB1出问题,无法工作。
5. 4. IWDG的设置
第16节课WWDG
- 偶尔的两次异常,即正常状态到异常状态、接着异常状态又到正常状态,这属于异常,如果这两步操作在异常恢复时间内,即喂狗时间内,IWDG是无法检测到的。而WWDG可以解决。
2. WWDG喂狗机制,当WWDG的递减计数器1T[6:0]大于上限窗口W[6:0]时1,如果尝试去喂狗,将立刻产生CPU复位。
- WWDG配置code
- 因为WWDG是与APB1连接的,所以需要从APB1相关函数使能WWDG - 初始化WWDG,配置计数,计数是有上限的,通过与最大值进行想与来限制。 - 设置预分频值(PR) - 设置上窗口值 - 使能并且喂狗
必须进行喂狗,不然CPU会不断进行重启。
第十七节USART
- 主要用于芯片与芯片之间的传输
- 芯片与PC之间的通信
- 芯片与外围模块之间的通信
UART 异步功能
USART 同步功能
USART_CK具有时钟功能
USART_CTS具有流控功能,因为不同设备之间频率不一样,接发速率也不一样,CTS可以控制是否接受或者发送数据【硬件流控】,可以用于判断是否进行发送数据
USART_RTS发送请求
代码&逻辑
- 开启对应总线的时钟,同时需要开启GPIO管脚的时钟
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 吾辈之人,自当自强不息!!
评论