STM32经验心得

本文总结了STM32开发中遇到的几个典型问题,包括USART TX中断自动触发、GPIO及外设配置无效、ADC通道的理解、DMA通道配置错误以及定时器PWM输出的延迟修改。针对每个问题,详细分析了原因并提供了有效的解决方法。
摘要由CSDN通过智能技术生成

相关经验及心得如下: 
摘要:1.在配置USART的TX完成中断后,在没有发数的情况下自动进入TX完成中断函数。2 .在TX配置完成后,相应的TC标志位会自动置1,随后就进入了TX完成中断。3.相关配置程序编写无误,并已经开启时钟,依旧无法配置相关GPIO及外设;4.ADC通道:分为规则组和注入组;5.修改定时器的预装值后,定时器不能立刻修改。

一、 USART TX中断配置

  1. 问题描述:
    在配置USART的TX完成中断后,在没有发数的情况下自动进入TX完成中断函数。
    1

  2. 问题分析:
    在TX配置完成后,相应的TC标志位会自动置1,随后就进入了TX完成中断。
    1
    (TC标志位:发送完成标志位 )
    当包含有数据的一帧发送完成后,由硬件将该位置位。如果USART_CR1中的TCIE为1,则产生中断。由软件序列清除该位(先读USART_SR,然后写入USART_DR)。TC位也可以通过写入0来清除,只有在多缓存通讯中才推荐这种清除程序。
    0:发送还未完成;
    1:发送完成成。

  3. 解决方法:
    a) 方案一: 先读状态寄存器(USART_SR) ,然后再DR发送寄存器中写数,TC标志位自动清除;
    1
    /** 用于清除TC标志位**/
    USART_GetFlagStatus(USART1, USART_IT_TC);
    USART1->DR=0x00;
    1
    2
    3
    b) 方案二:强行将SR寄存器的TC位写0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值