当前位置: 首页 > news >正文

STM32第15天串口中断接收

一:库函数实现串口接收
软件流程设计
初始化系统
初始化 GPIO 、串口外设、 LED 时钟
初始化串口和 LED 引脚
串口发送控制 LED
usart.c

 

#include "stm32f10x.h"
#include "usart.h"
#include "stdio.h"void my_usart_Init()//千万不要和32库里面串口定于的名字一样,不然会报错
{GPIO_InitTypeDef Usart_Initstruct;USART_InitTypeDef My_usart_Initstruct;NVIC_InitTypeDef NVIC_Initstruct;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);Usart_Initstruct.GPIO_Pin=GPIO_Pin_9 ;Usart_Initstruct.GPIO_Mode=GPIO_Mode_AF_PP;Usart_Initstruct.GPIO_Speed= GPIO_Speed_10MHz;GPIO_Init(GPIOA,&Usart_Initstruct);Usart_Initstruct.GPIO_Pin=GPIO_Pin_10;Usart_Initstruct.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOA,&Usart_Initstruct);My_usart_Initstruct.USART_BaudRate=115200;My_usart_Initstruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;My_usart_Initstruct.USART_Mode= USART_Mode_Rx | USART_Mode_Tx ;My_usart_Initstruct.USART_Parity=USART_Parity_No ;My_usart_Initstruct.USART_StopBits=USART_StopBits_1 ;My_usart_Initstruct.USART_WordLength=USART_WordLength_8b ;USART_Init(USART1, &My_usart_Initstruct);USART_Cmd(USART1,ENABLE);USART_ITConfig( USART1,USART_IT_RXNE, ENABLE);NVIC_Initstruct.NVIC_IRQChannel= USART1_IRQn;NVIC_Initstruct.NVIC_IRQChannelPreemptionPriority=0;NVIC_Initstruct.NVIC_IRQChannelSubPriority=0;NVIC_Initstruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_Initstruct);}void My_Usart_Send_Byte(USART_TypeDef* USARTx, uint16_t Data)
{USART_SendData(USARTx,  Data);while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);}void My_Usart_Send_Sting(USART_TypeDef* USARTx, char * str)
{uint16_t i=0;do{My_Usart_Send_Byte(USARTx,  * (str+i));i++;}while(* (str+i) != '\0');while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);}int fputc(int ch, FILE * p)
{USART_SendData(USART1, (u8)ch );while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);return ch;}void USART1_IRQHandler()
{char str;if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){str=USART_ReceiveData(USART1);printf("receive date: %c \r\n",str);if(str == '0'){GPIO_ResetBits(GPIOA,GPIO_Pin_1);printf("LED IS ON \r\n");}if(str == '1'){GPIO_SetBits(GPIOA,GPIO_Pin_1);printf("LED IS OFF \r\n");}USART_ClearITPendingBit(USART1,USART_IT_RXNE);}}

usart.h

#ifndef USART_H_
#define USART_H_void my_usart_Init(void);
void My_Usart_Send_Byte(USART_TypeDef* USARTx, uint16_t Data);
void My_Usart_Send_Sting(USART_TypeDef* USARTx, char * str);#endif

 main.c

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "Bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"
#include "wireless.h"
#include "exti_key.h"
#include "usart.h"
#include "stdio.h"void delay(uint16_t time)//延时1ms  软件延时粗延时
{uint16_t i=0;while(time --){i=12000;while(i --);}}int  main()
{my_usart_Init();LED_Init();//	My_Usart_Send_Byte( USART1, 'A');
//	My_Usart_Send_Byte( USART1, 'B');
//	My_Usart_Send_Byte( USART1, 'C');//	My_Usart_Send_Sting( USART1, "kobe \r\n");
//	printf("kobe is king \r\n");while(1){
//		USART_SendData( USART1,  'A');}}

代码心得

写串口中断void  USART1_IRQHandler()去startup_stm32f10x_hd.s找到WEAK的弱定义

http://www.dtcms.com/a/267579.html

相关文章:

  • 数据结构:数组抽象数据类型(Array ADT)
  • oracle的内存架构学习
  • Hashcat 最快密码恢复工具实践指南
  • jvm架构原理剖析篇
  • C++ Qt 基础教程:信号与槽机制详解及 QPushButton 实战
  • virtualbox+vagrant私有网络宿主机无法ping通虚拟机问题请教
  • Apache 配置文件提权的实战思考
  • 数据库-元数据表
  • docker容器中Mysql数据库的备份与恢复
  • Java的AI新纪元:Embabel如何引领智能应用开发浪潮
  • 一文讲清楚React中setState的使用方法和机制
  • 应用标签思路参考
  • wsl查看磁盘文件并清理空间
  • Django跨域
  • 什么是单点登录SSO?有哪些常用的实现方式?
  • Android PNG/JPG图ARGB_8888/RGB_565‌解码形成Bitmap在物理内存占用大小的简单计算
  • SpringBoot系列—入门
  • ffplay6 播放器关键技术点分析 1/2
  • NumPy-核心函数np.matmul()深入解析
  • UI前端与数字孪生融合:为智能制造提供可视化生产调度方案
  • 分享一些服务端请求伪造SSRF的笔记
  • RAL-2025 | 触觉助力无人机空中探索!基于柔顺机器人手指的无人机触觉导航
  • 快讯|美团即时零售日订单已突破1.2亿,餐饮订单占比过亿
  • 【第五章】 工程测量学
  • ASP.NET代码审计 MVC架构 SQL注入漏洞n
  • 《设计模式之禅》笔记摘录 - 4.抽象工厂模式
  • Puppeteer page.$$(selector)
  • Swift 数学计算:用 Accelerate 框架让性能“加速吃鸡”
  • go基本用法
  • CentOS虚拟机ifconfig命令不显示IP地址解决方法