07 2020 档案
摘要:使用CubeMx生成的MDK工程无法使用软件仿真,提示unknown pin 解决办法: 打开一个非CUbeMx生成的MDK工程,把红色框框里面的设置替换CubeMx生成的MDK工程。芯片要对应。这里都是f103的。
阅读全文
摘要:记录一下使用cubemx配置串口发送dma的流程和问题 1.打开时钟 2.打开串口 3.设置DMA 设置dma可以从syscore里面找dma 也可以在串口中配置dma,这两种方法一样。 4.生成工程后,在需要开启dma传输的地方调用这个函数即可。 HAL_UART_Transmit_DMA(&hu
阅读全文
摘要:1.什么是IIC IIC 总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,两条线可以挂多个设备。 IIC设备(绝大多数)里有个固化的地址,只有在两条线上传输的值等于IIC设备的固化地址时,其才会作出响应。通常我们为了方便把IIC设备分为主设备和从设备,基本上谁
阅读全文
摘要:1.什么是STM32CubeMx和HAL库 HAL库对比标准库,封装程度更高,更具有移植性。STM32CUbeMx是一种图形化配置界面,用来完成对外设的初始化,比如RCC模块、NVIC、GPIO、串口、定时器。使用标准库都是先对某个外设的结构体赋值,最后调用Init函数将结构体写入寄存器,这个过程有
阅读全文
摘要:对比标准库流程,使用CubeMx配置PWM 1.PWM 标准库中使用pwm的流程 1.开时钟 2.设置psc和arr 3.通道初始化 4.设置CCRx比较/捕获寄存器的值 HAL库中,以上操作都在图形化界面上操作 1.开时钟(先开RRC,再开TIM,不管干啥,第一步要做的都是要先打开RRC,使用HS
阅读全文
摘要:对比标准库的流程使用HAL库编写定时器更新中断 标准库中使用定时器更新中断的方式: 1.开时钟,设置TIM的时钟 2.初始化定时器石基的结构体 3.调用Init初始化函数 4.处理定时器中断 HAL中使用定时器更新中断的方式: 1.开时钟 2.初始化定时器石基的结构体 3.处理定时器中断 3.1在C
阅读全文
摘要:CUbeMx配置EXTI 1.EXTI配置比较简单,看最后面两张图片即可。这里说一下EXTI9_5中断的问题。 EXTI5这条外部中断线对应PA5、PB5、一直到PG5。我在CubeMx中配置PE5和PF5都连接到EXTI5线上,结果发现后配置的端口总会覆盖先配置的端口 查看EXTI寄存器配置 发现
阅读全文
摘要:对比标准库的流程使用HAL库编写流水灯 标准库: 1.开时钟 2.初始化GPIOInit结构体 3.调用GPIO_Init(GPIOB, &GPIO_InitStructure) 初始化函数 1 typedef struct 2 { 3 uint16_t GPIO_Pin; /*!< Specifi
阅读全文
摘要:标准库中打开串口的函数: USART_Cmd(USART1, ENABLE); 标准库中打开中断的函数:需要单独设置被打开的中断的类型 USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE); 在HAL中,打开串口和中断合并成了一个函数:发送就打开发送
阅读全文
摘要:1.什么是SPI SPI通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说)、MOSI(数据输出,针对主机来说)、SCLK(时钟,主机产生)、CS/SS(片选,一般由主机发送或者直接使能,通常为低电平有效)。全双工。 2.SPI物理层 图1 SPI物理层连
阅读全文
摘要:1.ADC介绍 STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器中。ADC的输入时钟不得超
阅读全文
摘要:首先从定时器的功能框图上介绍定时器的基本功能,然后介绍输出比较模式(输出PWM)和输入捕获模式。最后使用定时器的输入捕获功能测量一个脉冲的宽度。 通用定时器框图如下:( STM32中文参考手册_V10.pdf P254) 图1 1.输出模式 从图1可以看到通用定时器的基本框图。框图比较复杂,把定时器
阅读全文
摘要:简要说一下实验目的:上位机给单片机发送数据,单片机使用串口接收中断接收。在接收中断中,串口向DMA控制器发送请求,把内存中的数据发送到串口的DR寄存器(发送到上位机) 1.串口的基本配置配置略过,需要注意的是打开串口的接收中断,编写接收中断函数 串口接收中断的NVIC配置 1 /* 配置USART为
阅读全文