![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
STM32单片机
文章平均质量分 71
基于STM32单片机库函数的开发学习与记录。
Vicssic
Robocon坑友,机器人爱好者,目前在通信行业,从事网络设备研发工作。座右铭:永远保持对技术的热爱,追求与敬畏。如果你喜欢我的文章,请多多关注。
展开
-
Ubuntu 18.04环境下使用Eclipse和ST-Link搭建STM32开发环境
日期:2021年6月28日建议:如果此文章超过半年,尽量选择我列出的官方网站查看教程。备注:本电脑换了软件源,使用中科大的软件源参考站点1.ST-Link的github地址:https://github.com/stlink-org/stlink2.ST-Link的安装教程(英文):https://github.com/stlink-org/stlink/blob/develop/doc/compiling.md3.Eclipse下载地址(c/c++):https://www.ecl原创 2021-06-28 16:54:37 · 1017 阅读 · 2 评论 -
【STM32F042】串口发送字符串函数的注释
// 使用串口发送数据void usart_send(u8 *data){ while(*data) { while((USART_GetFlagStatus(USART1,USART_FLAG_TXE) != SET)) // 发送寄存器未满 { USART_SendData(USART1,*data); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)); // 发送完成 data++; } }}...原创 2021-04-24 18:29:45 · 871 阅读 · 0 评论 -
【STM32F042】ADC卡死,ADC一直为0,ADC配置的坑
1.问题描述最近在调试电机驱动,刚好写到电压采集这一部分,板子的主控是STM32F040K6T6.用到了ADC,使用非DMA方式。刚开始读取到的值全部是0,然后程序卡死,我在使用万用表测IO口电压后,排除了硬件问题。网上找了一堆资料,得到的解决方案有这么几种:1.说是官方的库函数ADC_ChannelConfig()有问题,需要把“|”符号去掉的,代码如下,修改之后,依旧卡死void ADC_ChannelConfig(ADC_TypeDef* ADCx, uint32_t ADC_Chann原创 2020-10-08 21:50:52 · 13145 阅读 · 2 评论 -
【STM32F042】使用NTC热敏电阻实现温度测量
1.NTC介绍NTC是负温度系数的简写,全称是Negative temperature coefficient.意思是随着温度的升高,电阻值呈现下降趋势。常用作温度传感器。这里有一个式子表示负温度系数的电阻值: RT=R0*exp(B (1/T-1/T0))RT为周围温度为T (K) 时的电阻值,R0是周围温度为T0(K) 时的电阻值,注意这里的温度是开...原创 2020-10-07 14:38:18 · 21841 阅读 · 12 评论 -
【STM32F103】GPIO_Remap1_CAN1与GPIO_Remap2_CAN1区别
1.问题描述 最近在画一个小板子,引脚有点多,使用的芯片是STM32F103VET6,100脚的封装。在选择脚的的时候,没有仔细看Default和Remap这两栏,就直接把PD0和PD1当作了CAN的收发脚。结果码代码的时候发现这玩意居然需要重映射(如下图),欲哭无泪,只好硬着头皮学习一波了. 参考了一波原子PWM引脚重映射的程序,我以为是这样的就完事了。第一步:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2...原创 2020-07-11 17:56:22 · 4605 阅读 · 5 评论 -
【STM32】STM32F407实现简单的Modbus协议
1.ModBus协议简介 MODBUS协议是一种串行通信协议,由Modicon公司(施耐德公司前身)发表,由于其公开发表且无版权要求,易于部署和维护,在工业界广泛应用。MODBUS采用主从通信(Master/Slave),MODBUS有三种报文格式:ASCII、RTU、TCP,本文主要讨论RTU。 如下图所示,串行通信上的MODBUS协议主要由地址,功能码,数据,CRC校验四部分数据帧构成。主机和从机的串行通信设备要求一致,参数要求一致,即假设使用串口,主从机波特率,奇偶校验...原创 2020-05-11 17:27:45 · 6126 阅读 · 5 评论 -
【STM32】STM32F407读取AS5047P磁编码器芯片数据(SPI)
1.STM32F407的SPI配置Q1:先SPI_Cmd(SPI1, DISABLE); //失能SPI外设,再配置SPIQ2:使用SPI_SSOutputCmd(SPI1, ENABLE)打开gao'x硬件NSS使能//以下是SPI模块的初始化代码,配置成主机模式 //SPI口初始化//这里针是对SPI1的初始化// SPI1_NSS PA4// SPI1_...原创 2020-05-19 16:18:48 · 9957 阅读 · 5 评论 -
【STM32】STM32F407互补PWM进阶-带相移的互补PWM
上一次尝试了STM32F4的PWM互补输出,这次尝试带移相的两对PWM互补输出。1.相位差的概念 在这里,我把相位简单理解为延时,当然前提是两个信号彼此之间除了相位差,其他参数都一致。如下图,两信号在一个周期内,两波峰(或波谷)的时间差,就是相位差。而习惯上用弧度方式表示,如果两信号相位差位π/2,那么就是相差1/4个周期,这个很好理解,一圈为2π,π/2当然就是1/4了。2.思路 互补PWM使用高级定时器TIM1和TIM8产生,均使用CH1和CH1N通道,上...原创 2020-05-09 12:08:59 · 6802 阅读 · 7 评论 -
【STM32】STM32F407产生互补PWM输出
搜了一大堆,网上基本都是F103的例子,F4的很少,然而又需要用到,这里发一下调试过程吧首先看一下什么是互补的PWM,直接上图,第二张是把Y轴移动了一下,方便理解(Multisim仿真截图),我的简单理解就是当A输出1B输出0,我高的时候你低,你低的时候我高。他们两的频率是一样的,振幅也是一样的。1.关于输出通道问题 由《STM32F4xx中文参考手册》可知(见下图),只有高级定时器TIM1和TIM8可以输出两路互补信号。其中OCx为主输出,OCxN为互补输出。这句话的意思是:...原创 2020-05-08 17:37:49 · 7971 阅读 · 1 评论 -
【STM32】使用串口控制读取VESC
使用STM32串口控制VESC原创 2020-05-05 11:52:12 · 2568 阅读 · 11 评论 -
【Ardiuno】Ardiuno+MPU6050读取原始加速度并显示
最近手头有一个任务,使用MPU6050来测量加速度,就是物理上学的那个α,有一些小坑需要踩,在这里发出来,希望对大家有用。硬件:Ardiuno Nano(Old)/MPU6050(IIC)step1:陀螺仪数据的获取 我是用的是Ardiuno的库,在这里下载:https://github.com/jrowberg/i2cdevlib,下载之后找到Ardiuno的安装目录里的...原创 2020-05-04 21:12:33 · 2738 阅读 · 5 评论