![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
___Crystal
当浮一大白
展开
-
STM32串口发送数据包总是丢失第一个字节的内容
设定发送数据如下:串口发送函数:串口打印结果:可以看到,明明TxBuff的大小为10个字节,但是只输出了后9位数据,第一位0x31没有输出;更改代码如下:串口打印结果如下:可以看到TxBuff[0]被正常输出了。查询STM32F4xx参考手册关于TC标志位有这样一段话,里面提到TC标志位是由软件序列清零的,也就是执行一条读状态寄存器SR,然后在写入数据寄存器DR来实现的发送完成标志位清零,也就是我们代码中for( len = 0;len < (sizeof(TxBuff)原创 2021-04-17 12:09:58 · 2309 阅读 · 0 评论 -
STM32定时器中断实现
1.使能定时器时钟(RCC)2.初始化定时器,配置ARR,PSC;对应预分频器寄存器TIMx_PSC和自动重载寄存器TIMx_ARR3.开启定时器中断,配置NVIC4.使能定时器5.编写中断服务函数void MY_TIM3_INIT(u16 arr,u16 psc){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; NVIC_InitTypeDef NVIC_InitStruct; //1.使能定时器时钟(RCC) RCC_APB1Pe原创 2021-04-07 20:47:47 · 742 阅读 · 0 评论 -
STM32串口编写流程
串口相关寄存器:USART_SR 状态寄存器(里面的一些标志位类似51的TI,RI)USART_DR 数据寄存器(类似SBUF)USART_BRR 波特率寄存器(波特率寄存器,15:4位定义了USARTDIV的整数部分,3:0位定义了USARTDIV的小数部分)波特率=fpclock(1,2)/(16*USARTDIV)USART_CR1 设置一些发送或接收使能,以及一些中断使能编写串口程序的步骤:1.串口时钟使能,GPIO时钟使能,使能串口对应的APB总线,以及GPIO对应的AHB总线2原创 2021-03-29 22:37:31 · 1316 阅读 · 0 评论 -
STM32F4xx常用时钟简单了解
如图:从上往下看:32kHz的LSI时钟可以供独立看门狗使用,32kHz的LSI时钟和32.768kHz的LSE时钟都可以作为实时时钟外设RTC的时钟源;HSE时钟经2-31分频后也可以作为RTC时钟源;向左箭头的SYSCLK,LSE和HSI均可以经过分频后通过特定引脚向外输出;系统时钟SYSCLK可以从HSI,HSE或者PLLCLK时钟三者之间选择,最高可以配置到168Mhz;另外PLL48CK可以做用于生成 USB OTG FS 的时钟 (48 MHz)、随机数发生器的时钟 (≤48 M原创 2021-03-16 20:52:12 · 682 阅读 · 0 评论