STM32学习记录
文章平均质量分 65
ღ 金龍戲水 ღ
控制科学与工程专业研一学生。如果有消息回复不及时,大家见谅,请多发几次。
展开
-
误用STM32串口发送标志位 “USART_FLAG_TXE” & “USART_FLAG_TC”造成的BUG
本来打算发送 0x30 ~ 0x39,却发现少了两个字节,这是因为上面的特殊情况,代码只将数据放到了发送缓冲区,而没有发送出去就掉电或待机了,这个时候其实最后两个字符是没有发送出去的。当然一般情况下这种写法是准确的,特殊情况也很少发生,所以这是可取的。(我不相信那么巧合,正好发送过程中,正好停电)。原创 2023-12-02 19:31:48 · 723 阅读 · 2 评论 -
嵌入式经典通信总线协议——RS232和RS485
注意:TTL电平信号通信距离应该<=1.5米。原创 2023-03-20 20:44:20 · 236 阅读 · 0 评论 -
嵌入式经典通信总线协议——UART
注意:两个机器要共地连接。原创 2023-03-19 20:16:01 · 379 阅读 · 1 评论 -
基于STM32单片机模块练习——ADC功能框图
ADC功能框图ADC简介并不是每种单片机的三个ADC都有16个外部通道。具体参数看单片机选型手册。ADC功能框图电压输入范围要测的外部电压如果超出0~3.3V的电压呢?通过外部电路把输入电压转换到规定范围。输入通道具体型号的单片机要查看通道转换顺序:触发源转换时间ADC——CLK一般由PCLK2(72M)经过6分频(12M)得到。采样率<1M.独立模式指的是,只使用 ADC1或2或3.高16bit是双ADC模式下存储数据的。note:双ADC模原创 2021-11-05 20:06:12 · 679 阅读 · 0 评论 -
STM32中TIM_ClearFlag和TIM_ClearITPendingBit有什么区别
STM32中TIM_ClearFlag和TIM_ClearITPendingBit有什么区别/** * @brief Clears the TIMx's pending flags. * @param TIMx: where x can be 1 to 17 to select the TIM peripheral. * @param TIM_FLAG: specifies the flag bit to clear. * This parameter can be any co原创 2021-10-05 15:16:46 · 4900 阅读 · 0 评论 -
[平衡小车]学习记录
[平衡小车]学习记录硬件部分1.电池锂电池参数释义及注意事项2.小车底盘电机详细参数:编码器参数:3.主控板TB6612直流电机驱动特性:♦电源电压:VM = 15 V(最大)♦输出电流:iout = 1.2a(平均值)/3.2a(峰值)♦输出低导通电阻:0.5ω(上限+下限典型值。@ VM ≥ 5 V)♦待机(省电)系统♦正转/反转/短制动/停止功能模式♦内置热关断电路和低压检测电路控制功能真值表:...原创 2021-08-19 12:22:34 · 150 阅读 · 0 评论 -
基于STM32单片机模块练习——在使用MPU6050时遇到的令人头疼的问题
在使用MPU6050时遇到的令人头疼的问题1.整个程序在一开始运行就卡死在启动文件首先看一下,Target设置选项下的Use MicroLIB选项是不是选上勾了。如果这个设置也解决不了问题,那么你需要检查一下程序里,是否写了printf函数的接口函数。因为MPU6050里面有用到了这个函数,如果你没写这个函数的接口函数,就会导致系统卡死在系统文件里。printf函数的接口函数///重定向c库函数printf到串口,重定向后可使用printf函数int fputc(int ch, FILE *原创 2021-08-18 17:07:32 · 4279 阅读 · 1 评论 -
基于STM32单片机模块练习——EXTI外部中断
基于STM32单片机模块练习——EXTI外部中断EXTI简介EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。EXTI 功能框图EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所不同。首先原创 2021-08-09 13:08:25 · 374 阅读 · 0 评论 -
基于STM32单片机模块练习——中断总结
1.ARM cortex_m3 内核支持 256 个中断(16 个内核+240 外部)和可编程 256 级中断优先级的设置,与其相关的中断控制和中断优先级控制寄存器(NVIC、SYSTICK 等)也都属于cortex_m3 内核的部分。STM32 采用了 cortex_m3 内核,所以这部分仍旧保留使用,但 STM32并没有使用cortex_m3 内核全部的东西(如内存保护单元 MPU 等,只保留了NVIC、SYSTICK ),因此它的 NVIC 是cortex_m3 内核的 NVIC 的子集。原创 2021-08-09 11:03:48 · 460 阅读 · 0 评论 -
【STM32中断】了解更深入的东西,或者直接对寄存器操作(新手没必要看)
深入NVIC1. 看看 Cortex-M3 中与 NVIC 相关的寄存器有哪些SysTick Control and Status Register Read/write 0xE000E010 SysTick Reload Value Register Read/write 0xE000E014 SysTick Current Value Register Read/write clear 0xE000E018 SysTick Calibration Value Register Read-onl原创 2021-08-09 11:02:39 · 373 阅读 · 0 评论 -
基于STM32单片机模块练习——认识固件库
认识固件库固件库应该包含的文件新建一个固件库工程1.新建一个工程的总文件夹例如:2.在它之下新建如下文件夹3.打开keil新建一个工程4.选择CPU型号5.添加组文件夹6.添加文件7.配置魔术棒选项卡(1) Target 中选中微库“ Use MicroLib”,为的是在日后编写串口驱动的时候可以使用printf 函数。(2) 在 Output 选项卡中把输出文件夹定位到我们工程目录下的“output”文件夹,如果想在编译的过程中生成 hex 文件,那么那 Create原创 2021-08-02 19:37:32 · 777 阅读 · 5 评论 -
基于STM32单片机模块练习——认识STM32
基于STM32单片机模块练习——认识STM32QFP封装就是贴片封装具体的引脚描述可以查看芯片数据手册原创 2021-08-02 16:42:41 · 198 阅读 · 0 评论 -
基于STM32单片机模块练习——高级定时器
基于STM32单片机模块练习——高级定时器功能简介两边计数:从0计数到CCR的值,再从CCR的值计数到零。高级定时器GPIO引脚说明高级定时器功能框图1.时钟源1.内部时钟内部时钟 CK_INT 即来自于芯片内部,等于 72M,一般情况下,我们都是使用内部时钟。当从模式控制寄存器 TIMx_SMCR 的 SMS 位等于 000 时,则使用内部时钟。2.外部时钟模式一2.外部时钟模式二3.内部触发输入(了解)2.时基3.输入捕获使用PWM输入捕获,一个输入原创 2021-07-14 20:17:39 · 791 阅读 · 3 评论 -
基于STM32单片机模块练习——基本定时器
基于STM32单片机模块练习——基本定时器功能简介PCLK1的时钟频率为36mhz,但是如果APB1的预分频系数不为1,频率就会X2(72mhz)送给定时器2~7。定时器1和8的时钟来自PCLK2,时钟频率为72mhz。基本定时器的时基内部时钟,经过PSC预分频器后,送给计数器的时钟为:72mhz/(PSC+1),这是系统规定的公式。计数器对此时钟的脉冲进行计数,16bit的计数器最大加到65535,并产生一个中断。我们可以自行配置自动重装寄存器(ARR),定时器只要计数到ARR的值,就原创 2021-07-14 14:15:16 · 676 阅读 · 3 评论 -
基于STM32单片机模块练习——OLED模块
基于STM32单片机模块练习——OLED模块相关知识点向OLED写一个字节/** * @brief I2C_WriteByte,向OLED寄存器地址写一个byte的数据 * @param addr:寄存器地址 * data:要写入的数据 * @retval 无 */void I2C_WriteByte(uint8_t addr,uint8_t data) { i2c_Start();//开启I2C总线 /* 发送设备地址+读写控制bit(0 = w, 1原创 2021-04-28 20:33:57 · 901 阅读 · 0 评论