推荐阅读最新更新时间:2024-11-20 14:46
STM32F103C8T 学习 - 环境配置
一、搭建开发环境需要的文件 ST库:https://pan.baidu.com/s/1Nt5SCaaZZ2RjLcYtT7UApg ST-Link v2驱动及 Keil4 开发工具 :https://pan.baidu.com/s/1ibcL8XlMVW-oW7qA9rtp0w 1、首先我们需要一个ST库 ST的官网经常改变,就不放置路径了,毕竟过一段时间也会出错,大家除了在官网找也可以在网上找人家分享的资源,网上也有很多人分享。如果你是用库函数开发的话,则必须要有一个ST库,在找的时候要注意找对应的MCU系列ST库 2、安装MDK软件 MDK的安装很简单,直接下一步最后完成再破解就可以了,大家安装MDK软件时需要注意
[单片机]
STM32F103:GPIO八种工作原理详解
一、GPIO简介 GPIO就是通用I/O(输入/输出)端口,是STM32可控制的引脚。 STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 二、GPIO工作模式 1. 四种输入模式 GPIO_Mode_IN_FLOATING 浮空输入模式 GPIO_Mode_IPU 上拉输入模式 GPIO_Mode_IPD 下拉输入模式 GPIO_Mode_AIN 模拟输入模式 2. 四种输出模式 GPIO_Mode_Out_OD 开漏输出模式 GPIO_Mode_Out_PP 推挽输出模式 GPIO_Mode_AF_OD 复用开漏输出模式 GPIO_Mode_AF_PP 复用推挽输出模
[单片机]
错误解决:STM32F103串口1与串口3相同代码却结果不同
在前几天调试openmv时发现同样的代码串口1和串口3的结果却是不一样的,当时着实是把我坑了很久,怎么都找不到原因,用示波器看波形也是没有问题的,在Openedv网站上有位网友指出是我初始化代码的问题,在翻阅参考手册后终于发现了问题。 下列代码为我原本的初始化代码: #include sys.h #include usart.h #include led.h #include usart3.h int theta_err,rho_err; int main(void) { Stm32_Clock_Init(9); //=====系统时钟设置 delay_init(72); //
[单片机]
STM32F103模拟IIC
在用STM32F103模拟IIC时,SDA的配置很有意思,既要读数据,又要写数据,这两者之间的切换通过GPIO的配置寄存器来实现。 #define SDA_IN() {GPIOB- CRL&=0X0FFFFFFF;GPIOB- CRL|=8 28;} #define SDA_OUT() {GPIOB- CRL&=0X0FFFFFFF;GPIOB- CRL|=3 28;} 就是这两句话,GPIO配置寄存器分为端口配置低寄存器(GPIOx_CRL) (x=A..E)和端口配置高寄存器(GPIOx_CRH) (x=A..E);在这里用到的是PB7模拟IIC的SDA,所以切换配置时,先将原配置清零,GPIOB- CRL&=0X0FFFFF
[单片机]
使用stm32f103 PA11不能正常使用IO问题
最近做了个小项目 使用 PA11 输出控制光耦配置方式 如下: GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = DN_GPIO_PINS; GPIO_Init(DN_GPIO_PORT, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(DN_RCC_APB , ENABL
[单片机]
STM32F103 GPIO的外部中断的使用例子
STM32的GPIO可以作为中断输入使用,这样增强了实时检测性,可以用于外部按键或是触控等使用。如果使用,其实不难,这里使用标准的固件库,加入外部中断的库文件: 在stm32f10x_conf.h 中,打开 #include stm32f10x_exti.h 这里通过外部触控的方式,点亮或是关闭一个LED灯的例子,熟悉一下STM32F103 系列外部中断的使用。 我这里使用的GPIO为:PC11,头文件的GPIO宏定义为: /**** EXTI Control ****/ void EXTI_GPIO_Init(void); #define RCC_TOUCHOUT RCC_APB2
[单片机]
STM32F103 USART1串口重映射功能的实现
我们知道,F103的usart1串口是PA8 PA9的复用功能,我们在使用的时候直接配置这两个引脚,配置复用即可,但有时,在实际工作中,也会采用串口的重映射功能。 由图可知,usart1是PB6 PB7的重定义功能,也就是重映射功能,话不多说,直接上代码。我使用的是103C8T7,请知悉。 static void Gpio_Config1(void){ GPIO_InitTypeDef GPIO_InitStructure; /* TX PB6 */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin = GPI
[单片机]
STM32f103 串口接收不定长数据
方法1:串口接受数据,定时器来判断超时是否接受数据完成。 方法2:DMA接受+IDLE中断 实现思路:采用STM32F103的串口1,并配置成空闲中断IDLE模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数据长度是200个字节,那么在单片机接收到一个字节的时候并不会产生串口中断,而是DMA在后台把数据默默地搬运到你指定的缓冲区里面。当整帧数据发送完毕之后串口才会产生一次中断,此时可以利用DMA_GetCurrDataCounter();函数计算出本次的数据接受长度,从而进行数据处理。 应用对象:适用于各种串口相关的通信协议,如:MODBUS,PPI
[单片机]