由于PC没有485接口,所以配置了一个UT-2201转换器,485转232,转换器的接口如下图所示:
==============================================================
下图是PC与转换器之间的连接线:
==============================================================
下图是转换器的连接:
==============================================================
在开发板上的原理图如下,短接1和3,短接2和4,把转换器引出的A对应下图的A,引出的B对应下图的B
PA2--TX-485
复用推挽输出
50Mhz
PA3--RX-485
模拟输入
50Mhz
PG3--CS-485
推挽输出
50Mhz
波特率9600,8位数据格式,1停止位,无校验
串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
==============================================================
软件中重要的函数:
void USART2_IRQHandler(void)//串2中断函数
{
u8 res;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//接收到数据
{
res =USART_ReceiveData(USART2);//;读取接收到的数据USART2->DR
RS485_TX_EN=1;//发送
delay_ms(1);
USART_SendData(USART2,res);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=1);
delay_ms(2);
RS485_TX_EN=0;//接收
}
USART_ClearFlag(USART2,USART_FLAG_TC);
}
==============================================================
发送的数据是一个字节(如果想要多个字节发送,则可以用一个数组)
开发板返回发送的字节
关键字:STM32F103 485通讯
引用地址:
基于STM32F103的485通讯
推荐阅读最新更新时间:2024-03-16 16:15
STM32F103的GPIO 模式区分
四种输入模式: 上拉输入模式(GPIO_Mode_IPU):默认模式下(GPIO没有输入)读取的GPIO引脚数据为1,高电平。 下拉输入模式(GPIO_Mode_IPD):默认模式下(GPIO没有输入)读取的GPIO引脚数据为0,低电平。 浮空输入模式(GPIO_Mode_IN_FLOATING):既没有上拉也没有下拉,引脚电压为不确定值。(主要用于来做 I2C,USART的接收端) 模拟输入模式(GPIO_Mode_AIN):关闭了斯密特触发器,不接上拉下拉电阻,经由另一个线路把电压信号传送到片上外设模块。(主要用于ADC外设的时候) 四种输出模式: 推挽输出模式(GPIO_Mode_Out_PP):输出 0
[单片机]
STM32F103单片机时钟树结构图及时钟配置
2.1 时钟树结构图 STM32属于Cortex-M3内核的单片机,时钟结构比之前的51单片机较复杂的多,根据数据手册,STM32F103的时钟结构如下图所示。 根据上图可以看到,STM32F103系列单片机具有4个时钟源,内部的8MHz时钟发生器,外部的晶体振荡器接口,最高支持16MHz,外部的32.768kHz晶体振荡器接口和内部的40kHz时钟发生器,其中32.768kHz和40kHz主要用于内部RTC时钟脉冲,8MHz的晶振通过PLL时钟倍乘器,将系统总线时钟提高为72MHz。 STM32F103系列内部具有2条外设时钟总线,APB1和APB2,其中APB2的时钟最高可达72MHz,APB1的时钟最高可达36MHz
[单片机]
基于STM32F103C8T6的点灯设计
根据STM32F103C8T6的原理图,可知LED2与CPU的PC13相连,当PC13=1(高电平)时,LED2呈熄灭状态;当PC13=0(低电平)时,LED2呈点亮状态。 参考代码如下: //main.c #include stm32f10x.h #include led.h #include delay.h int main(void) { LED_Init(); while(1) { GPIO_ResetBits(GPIOC,GPIO_Pin_13); delay(200); GPIO_SetBits(GPIOC,GPIO_Pin_13); delay(200); } } //led.c #i
[单片机]
Contiki移植到STM32F103VC
Contiki官网下载V2.5源码http://www.contiki-os.org/ contiki-2.5源码中,stm32移植的相关内容分散在两个文件夹中,第一, cpu\arm\stm32f103,这个文件夹存放的stm32移植的相关文件;第二,platform\stm32test,这个文件夹中有一个不是那么完整的例子。 在Contiki-2.5源码文件夹下用到的有:\core\sys\下面所有文件,\cpu\arm\stm32f103\clock.c文件主要修改,\platform\stm32test\contiki-conf.h文件。 STM32工程下主要用到的文件:core_cm3.c,system_stm3
[单片机]
KEIL 5下载程序到STM32F103ZET6芯片时的相关设置
1、点击箭头所指的魔术棒打开项目设置,(也可在Project下打开该魔术棒) 2、Device选项卡下选择项目所使用的芯片,右侧是与所选芯片的相关信息(我用的是STM32F103ZET6选择STM32F103ZE即可) 3、Target选项卡下晶振与软件仿真有关,我们是下载到硬件然后调试可以不用设置,下面有ROM和RAM的起始地址和大小,指的都是实际硬件的ROM和RAM的起始地址和大小,默认即可 4、Output选项卡如下,打开Debug调试信息和阅读代码时函数跳转 5、Listing选项卡下将红框中的全部选上,目的是在最后程序链接时记录详细信息(在project.map文件中),英语不太好
[单片机]
提高stm32f103c8t6的PWM精度
刚从51转过来,不想投入太多的资金,选择某宝的小蓝板(bluePill),这个板可能是最便宜的了(7.6元包邮)。初步测试一下时钟,定时器,中断,DMA什么的。到ADC还比较满意,DAC就晕了(这个芯片没有DAC)。于是采用PWM出模拟值。先初始化; void TIM1_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure;
[单片机]
STM32F103RBT6 定时器 Timer2 源程序
STM32F103RBT6定时器Timer2的使用。 复制代码 这里说下定时器定时时间: (1)STM32时钟为:72MHz,则每次振荡时间为:T=1/f=1/72MHz,振荡72M个周期才为:1S (2)分频数:72M/20000-1 因为从0开始,其实就是:72M/20000=3600,分频就是多少个基本周期算一 个新的振荡周期,如分频为2,刚之前振荡2个周才为目前新的一个周期。则为:36MHz,也就是1S中振荡 36M次了。M为10的6次方。 (3)寄存器周期值:200,则表示:200个分频后的时间基点才中断一次。 定时时间计算: 定时时间=(1/72M)*(72M/20000)*200=(1/20000)*200
[单片机]
STM32F103 IO口结构和特性
STM32F103 IO口结构和特性 其内部上拉下拉电阻是40K 模式8种: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 I/O口的输出模式下。有3种输出速度可选(2MHz、10MHz和50MHz) 根据
[单片机]