- 博客(4)
- 收藏
- 关注
原创 串口接收不定长数据
标准库无函数清零空闲中断标志位。手册提示,先读SR寄存器后读DR寄存器,硬件自动清零空闲中断标志位。(5)打通UART1到NVIC的道路(USART_IT_IDLE是空闲标志位)而串口空闲中断是接受到数据后,超过一个字节流的时间未接收到数据就会触发中断。2.Why:若每来一个数据就进入中断,会严重阻塞主程序的运行。(6)DMA配置(注意,硬件触发DMA通道须严格按照手册选择)(6)打通UART到DMA的道路。1.方法:串口空闲中断+DMA。(7)给DMA和UART上电。(8)中断函数操作(
2025-03-02 15:34:45
305
1
原创 STM32利用滴答定时器延时微秒
问题引入:江科大提供的延时微秒函数正是用滴答定时器实现的。(1)为什么定时器的重装载值是72*xus:系统滴答定时器用的是系统主频72Mhz,这意味着(1/72000000s)滴答定时器是内核外设,编程资料为【STM32F10xxx Cortex-M3编程手册】。(3)根据CTRL设置滴答定时器的时钟源,启动、关闭定时器,判断定时器是否溢出。(2)对VAL任何值的写入都会将字段清除为0,即从LOAD值开始依次往下递减。,如果我们想要计时15us,那么需要跳动1080次,那就是(15us/(1/72)us)
2025-02-22 21:41:35
481
原创 STM32通用定时器实现微秒延时函数
思路:以STM32F103C8T6为例,定时器外设有两个重要的东西:自动重装寄存器(ARR)和32位计数器(CNT),规定计数器跳动一次需要1us,将要延时的时间直接给ARR,每次让CNT的值变0,向上计数。当CNT=ARR时,会触发更新事件标志位,通过该标志位可以知道延时是否结束。注意最后要清除该标志位!为了能更精确的延时,最好直接操作TIM寄存器。
2025-02-22 21:30:15
872
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅