![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
___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 评论 -
STM32外部中断编写流程
1.使能GPIO取决于外部中断线要映射到哪个GPIO2.初始化GPIO3.使能系统配置时钟SYSCFG4.配置中断线,映射到相应GPIO端口5.外部中断初始化,包括中断线,中断触发方式,中断模式和使能6.配置中断抢占优先级和子优先级,配置之前在主函数比较靠前的位置先设置分组7.编写中断服务函数,包括中断标志位的判断以及解挂操作void MY_EXTI_INIT(){ GPIO_InitTypeDef GPIO_InitStruct; EXTI_InitTypeDef EXTI_Ini原创 2021-03-25 23:15:02 · 1188 阅读 · 0 评论