串口通信的学习及操作

1 ch340工作原理

在这里插入图片描述
CH340G主要特征:
●全速USB设备接口,兼容USB V2.0。

●仿真标准串口,用于升级原串口外围设备,或者通过USB增加额外串口。

●计算机端Windows操作系统下的串口应用程序完全兼容,无需修改。

●硬件全双工串口,内置收发缓冲区,支持通讯波特率50bps~2Mbps。

●支持常用的MODEM联络信号RTS、DTR、DCD、RI、DSR、CTS。

●通过外加电平转换器件,提供RS232、RS485、RS422等接口。

●软件兼容CH341,可以直接使用CH341的驱动程序。

●支持5V电源电压和3.3V电源电压甚至3V电源电压。

●提供SOP-16无铅封装,兼容RoHS。

2用GPIO端口完成3只LED红绿灯的周期闪烁

2.1配置jdk环境

在这里插入图片描述

2.2安装STM32CubeMX并安装固件库

在这里插入图片描述
在这里插入图片描述
点击File->New Pioject,创建新工程。
此时会出现一个新界面,在 Part Number 里选择STM32F103C8芯片,之后右边会出现芯片信息,选中之后,点击 Start Project 进入工程即可

进入界面后,在 Pinout &Configuration 栏里,配置系统调试接口SYS,选择 Serial Wire

配置外设,RCC设置,选择 HSE (外部高速时钟)为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器)

配置时钟,在 Cook Configuration 栏里,按照下面方式将 STM32 最高时钟调为72M(RCC选择外部高速时钟)。

在习惯上会配置一下 USART1,用于串口调试,USART1 一般系统板上都会与 usb 接口连接在一起,可以通过数据线,与上位机通讯。当然,这里实现流水灯可以不需要这个功能。

在 Connectify 中,选择 USART1,模式选择 Asynchronous(异步),即可完成配置,下方可以修改波动率之类的设置,这里默认即可。

配置 GPIO
点击右侧芯片上所需要的引脚,点击管脚 PA5,在菜单中选择 GPIO_Output,依次配置其他引脚,这里选择管脚PA5 、PB0 、PC14。可以在左侧的 GPIO 中看到每个管脚的位置,输出模式改为高电平,其他不需要做改动。

工程设置,在 Project Manager 界面中选择 Project ,按要求填入相关信息,建议地址不要有中文字符和空格。
这里选择 Keil5 编译器生成代码。
4

2.3利用keil编写程序代码

//宏定义,用于存放stm32寄存器映射
#define PERIPH_BASE           ((unsigned int)0x40000000)//AHB
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
#define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)
//GPIOA_BASE=0x40000000+0x10000+0x0800=0x40010800,该地址为GPIOA的基地址
#define GPIOB_BASE            (APB2PERIPH_BASE + 0x0C00)
//GPIOB_BASE=0x40000000+0x10000+0x0C00=0x40010C00,该地址为GPIOB的基地址
#define GPIOC_BASE            (APB2PERIPH_BASE + 0x1000)
//GPIOC_BASE=0x40000000+0x10000+0x1000=0x40011000,该地址为GPIOC的基地址
#define GPIOD_BASE            (APB2PERIPH_BASE + 0x1400)
//GPIOD_BASE=0x40000000+0x10000+0x1400=0x40011400,该地址为GPIOD的基地址
#define GPIOE_BASE            (APB2PERIPH_BASE + 0x1800)
//GPIOE_BASE=0x40000000+0x10000+0x0800=0x40011800,该地址为GPIOE的基地址
#define GPIOF_BASE            (APB2PERIPH_BASE + 0x1C00)
//GPIOF_BASE=0x40000000+0x10000+0x0800=0x40011C00,该地址为GPIOF的基地址
#define GPIOG_BASE            (APB2PERIPH_BASE + 0x2000)
//GPIOG_BASE=0x40000000+0x10000+0x0800=0x40012000,该地址为GPIOG的基地址
#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C
#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C
#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C
#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C
#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C
#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C   
#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C 
 
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))
 
 #define LED0  MEM_ADDR(BITBAND(GPIOA_ODR_Addr
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值