stm32实现串口通信和LED灯点亮

stm32串口通信

  • 串口协议和RS—232标准
    • RS232电平与TTL电平的区别
      • USB/TTL转RS232
  • CH340串口安装
    • 安装stm32cubemx并编写程序
      • 实现led灯的周期闪烁
  • 用stm32完成USART串口通信
    • 接下来进行波形观察
      • 总结
  • 两个工程完整代码

串口协议和RS—232标准

串口通信协议:是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485
RS—232标准:RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。因此,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。

RS232电平与TTL电平的区别

TTL标准:
TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。
RS232标准:
逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,注意电平的定义反相了一次

USB/TTL转RS232

USB转TTL STM32F103C8T6
GND G
3V3 3V3
RXD PA9
TXD PA10

CH340串口安装

stm32实现串口通信和LED灯点亮_第1张图片
双击安装即可,检查是否安装成功,插入USB串口后,点击设备管理器,检查端口是否有CH340
stm32实现串口通信和LED灯点亮_第2张图片

安装stm32cubemx并编写程序

链接:STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics
傻瓜式安装,把所有的框都选上
安装完成后,点击help,下载依赖包
stm32实现串口通信和LED灯点亮_第3张图片
下载完成后,选择自己的芯片,选择前面的复选框下载,绿色代表下载好了
你们选择后,点击install now就行
stm32实现串口通信和LED灯点亮_第4张图片
下载完成后回到home界面。点击图中的地方,创建新项目
stm32实现串口通信和LED灯点亮_第5张图片
点击part name输入自己的芯片,以stmc8t6
为例,之后中间出现的信息点击之后,在点击start project
stm32实现串口通信和LED灯点亮_第6张图片
点击system core,进入里面的sys,在debug那里选择serial wire
stm32实现串口通信和LED灯点亮_第7张图片
stm32实现串口通信和LED灯点亮_第8张图片
接下来进行配置时钟,进入rcc,有两个时钟hse,lse,我们要用GPIO借口,这些接口在APB2里
观察时钟架构,APB2由hse时钟控制,同时在这个界面把PLLCLK右边选上
stm32实现串口通信和LED灯点亮_第9张图片
所以我们把hse那里设置为crystal/ceramic resonator就行了
stm32实现串口通信和LED灯点亮_第10张图片
接下来就是点击相应的引脚设置输出寄存器,output哪一项,一共三个PA7
PB9 PC15
stm32实现串口通信和LED灯点亮_第11张图片
接下来点击system core里的GPIO,点击引脚名,把输出等级改为hight
mode不用改
stm32实现串口通信和LED灯点亮_第12张图片
点击project manager 配置好自己的路径名和项目名,然后改IDE为MDK—ARM
stm32实现串口通信和LED灯点亮_第13张图片
进入code generate界面,选择生成初始化文件.c/.h,之后在点击generate code就行了
stm32实现串口通信和LED灯点亮_第14张图片
打开刚刚生成的项目将main.c的主函数部分用下列函数代替

SystemClock_Config();//系统时钟初始化
  MX_GPIO_Init();//gpio初始化
  while (1)
  {		
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);//PA7亮灯
		HAL_Delay(500);//延时0.5s
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);//PA7熄灯
		HAL_Delay(500);//延时0.5s		
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯
		HAL_Delay(500);//延时0.5s
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯
		HAL_Delay(500);//延时0.5s
		
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
		HAL_Delay(500);//延时0.5s
		
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
		HAL_Delay(500);//延时0.5s
		
  }

stm32实现串口通信和LED灯点亮_第15张图片
在烧录运行,串口要断电置boot0为0,之后即可编译运行成功

实现led灯的周期闪烁

USB转TTL STM32F103C8T6
GND G
3V3 3V3
RXD PA9
TXD PA10

进入flymcu进行烧录
stm32实现串口通信和LED灯点亮_第16张图片
效果图如下

用stm32完成USART串口通信

打开stm32cubeMX,进入我的工程,选择芯片,开始进入
stm32实现串口通信和LED灯点亮_第17张图片
接下来选择时钟配置
stm32实现串口通信和LED灯点亮_第18张图片
设置USART2,点击MODE,选择Asynchronous
stm32实现串口通信和LED灯点亮_第19张图片
接着点击CLOCK configurstion选择HSE,PLLCLK
stm32实现串口通信和LED灯点亮_第20张图片
设置中断,在NVIC SEtting中点击Enabled
stm32实现串口通信和LED灯点亮_第21张图片
后面设置路径,只需要修改Application Structure为Basic,在Toolchain/IDE为MDK—ARM,在Code generate勾选生成项目
stm32实现串口通信和LED灯点亮_第22张图片
stm32实现串口通信和LED灯点亮_第23张图片
后面生成工程打开即可
只需要把main.c里面的程序改为下列代码

char data[]="hello windows!\n";//发送的数据
HAL_UART_Transmit(&huart2, (uint8_t *)data, 15, 0xffff);//发送	
HAL_Delay(1000);//延时

stm32实现串口通信和LED灯点亮_第24张图片
后面进行烧录
打开串行助手打印出hello windows
stm32实现串口通信和LED灯点亮_第25张图片

接下来进行波形观察

对keil进行相关操作
stm32实现串口通信和LED灯点亮_第26张图片
之后打开逻辑分析仪,选择端口,设置bit,运行就可观察到波形
stm32实现串口通信和LED灯点亮_第27张图片
大约1s一个波形

stm32实现串口通信和LED灯点亮_第28张图片

总结

通过本次实验我更加了解了stm32cubeMX的分装功能,更加了解到stm32d寄存器映射原理,最终完成了本次实验

两个工程完整代码

链接:https://pan.baidu.com/s/11DImWFKfnLbQDtseEeS8SA
提取码:e8cr

你可能感兴趣的:(笔记,stm32,串口通信,嵌入式硬件)