推荐阅读最新更新时间:2024-11-11 11:22
STM32使用问题总结
1.串口发送第一个字节丢失 问题代码 void USART1_SendBuf(uint8_t *pbuf , uint8_t len) { for( uint8_t i = 0 ; i len ; i++ ) { /* 写一个字节到USART1 */ USART_SendData(USART1, *pbuf++); /* 等待发送结束 */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {} } } 修正代码 void USART1_SendBuf(uint8_t *
[单片机]
STM32串口通信库的详细代码分享
从箱底捞出来的f103,支持的c语言太基础,虽然性能很高,然而开发时间长难以快速的使用,一开始把 c++那些该有的都搬进来,结果当然是觉得有的函数都没有了。小小的写了一个库用来通过串口来DEBUG 一共有这几个函数,串口为PA9和PA10,在C8T6最小系统上面通过测试 Serial_Begin() 初始化USART,设定波特率 Serial_WriteLine() 传输数据并换行 Serial_Write() 传输数据,没有换行符 例: char str = { THIS IS STM32C8T6 }; void main() { Serial_Begin(115200); while(1) { Serial_WriteL
[单片机]
STM32中断理解
题外话: 几乎所有的要学习的实在或虚拟的事物(或仅仅是一个理论)都可以用下面的方法对其了解; 但对于具体某一个事物不一定需要全部研究下面的项目; 什么是XXX 为什么要XXX XXX的分类 XXX的组成 XXX的特点 XXX的流程 用及XXX时注意事项 其他特有项目 ----------------------------------------------- stm32中断主题: 1 什么是中断 暂停原先的程序或事情,执行另外一些程序或事情,执行完成后返回原来的程序。 2 为什么要中断 因为另一些程序或事情比你原先正在做的事情要重要,或者这些突发事情你是无法控制它的来临的。 3 中断的分类 按不同方法进行分类 3.1 内部中
[单片机]
STM32的时钟的修改方法(HSE使用16M无源晶振时)
ST公司提供的时钟芯片是8MHZ,但是由于国内技术的局限性和国外技术的垄断,8M的芯片约2元/片,16M大约就是几毛钱,所以考虑成本,设计中往往需要使用16MHZ的电平,但是ST公司提供的是库函数的默认的系统时钟是8M,所以相关的PLL的倍频因子也是设置的是9( RCC- CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);),若使用16M的晶振,则需要进行相关代码的修改; 第一步,全局搜索HSE_VALUE #define HSE_VALUE ((uint32_t)8000000) 修改为: #define HSE_VALUE ((uint32_t)1
[单片机]
STM32 Bootloader异常复位如何解决
问题描述 客户反馈通过PC软件Flashloader不能够跟STM32 MCU自带Bootloader连接。并且系统运行一段时间后异常复位。 系统分析 检测原理图 延续之前的项目,进行的一些软硬件简单修改。 上电、放电的时序也是正常。 BOOT0 拉高,BOOT1 拉低, 测量工作时的电压正常(2.5v)。 检测所有相关的硬件软件都是没有问题,他们的BOOT脚,以及之前的PDR_ON是通过外围的FPGA单元控制,我们一开始怀疑这些上电时序,以及PDR逻辑出错。尝试让他们全部断开逻辑,测试整个上电,掉电过程都是没有什么问题。 测量波形 检测他们的串口工具 能正常在PC上发现他们的串口工具,数据的发送正常。 但是串口的到PCB
[单片机]
STM32 USB设备电路设计
当STM32F105配置为USB设备时, PA9/OTG_FS_VBUS是用来检测presense USB主机的。意法半导体设计评估显示PA9/OTG_FS_VBUS引脚通过一个零欧姆电阻连接到5 VBUS 。有这种方法有两个潜在的问题。该第一电势的问题是, PA9/OTG_FS_VBUS输入,虽然它是5V容限,可能损坏(如每ST支持)如果连接到5V时的STM32F105 VDD为0V。这可能发生在两个自供电和主机供电的应用。当电源关闭/拔出,而USB连接到主机仍处于活动状态,这将发生在一个自供电的应用。这将发生在一个主机供电应用过程中所花费的VDD稳压器来达到它的稳压输出电压所需的时间。一些设计师建议之间的PA9/OTG_FS_
[单片机]
STM32 HAL库学习系列第1篇 ADC配置 及 DAC配置
ADC工作均为非阻塞状态 轮询模式 中断模式 DMA模式 库函数: HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);//轮询模式,需放在循环中不断开启 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc); HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);//等待转换结束,只适用于轮询 HAL_StatusTypeDef HAL_ADC_PollForEve
[单片机]
STM32之八定时器中断
STM32的通用定时器是一个通过可编程预分频器(PSC)驱动的16 位自动装载计数器(CNT)构成。STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。 使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。 STM3的通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器功能包括: 1)16位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。 2)16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~65535之间
[单片机]