STM32 串口发送数据(发送一个字节,以及数组)

发布者:Amybaby最新更新时间:2017-10-29 来源: eefocus关键字:STM32  串口  发送数据 手机看文章 扫描二维码
随时随地手机看文章
  1. #include"usart1.h"

  2. //#include   //加载MDK 自带的 C 函数  D:KeilC51INC


  3. //串口1 配置

  4. void USART1_Config(void)

  5. {


  6.         GPIO_InitTypeDef GPIO_InitStructure; //定义结构体 

  7.         // 结构体内容在stm32f10x_gpio.h  101行        //  见库函数 P125页  


  8.         USART_InitTypeDef USART_InitStructure;         //定义结构体 

  9.         // 结构体内容在stm32f10x_usart.h  76行        //   库函数的348页


  10.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);

  11.         //打开时钟


  12.         //初始化GPIO 见库函数 P125页 

  13.            

  14.        

  15.          

  16.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;           //要设置的PIN

  17. //        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出


  18.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出

  19.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;        //输出速度

  20.         GPIO_Init(GPIOA,&GPIO_InitStructure);        //配置 IO


  21.        

  22.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  //RX 接收引脚

  23.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;        //浮空输入模式

  24.         GPIO_Init(GPIOA, &GPIO_InitStructure);          //配置IO口



  25.         // 结构体内容在stm32f10x_usart.h  76行        //   库函数的348页

  26.        

  27.         USART_InitStructure.USART_BaudRate=9600;   //设定波特率 

  28.         USART_InitStructure.USART_WordLength=USART_WordLength_8b;  //8位数据

  29.         USART_InitStructure.USART_StopBits=USART_StopBits_1;   //停止位1位

  30.         USART_InitStructure.USART_Parity=USART_Parity_No;  //无校验位

  31.        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//无硬件控制 CTS RTS 

  32.         USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;  //发送接收 使能

  33.         USART_Init(USART1,&USART_InitStructure); //配置USART1

  34.         

  35.         USART_Cmd(USART1,ENABLE); //使能 串口1        

  36. }


  37. void USART1_Send_Byte(unsigned char byte)   //串口发送一个字节

  38. {

  39.         USART_SendData(USART1, byte);        //通过库函数  发送数据

  40.         while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);  

  41.         //等待发送完成。   检测 USART_FLAG_TC 是否置1;    //见库函数 P359 介绍

  42.         

  43. }



  44. //发送字符串 函数   应用指针 方法

  45. void UART1_Send_Str(unsigned char *s)//发送字符串 函数   应用指针 方法

  46. {

  47.         unsigned char i=0;  //定义一个局部变量  用来 发送字符串 ++运算


  48.         while(s[i]!='')  // 每个字符串结尾 都是以   结尾的

  49.         {

  50.                 USART_SendData(USART1,s[i]);        //通过库函数  发送数据

  51.                 while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);  

  52.                 //等待发送完成。   检测 USART_FLAG_TC 是否置1;    //见库函数 P359 介绍


  53.                 i++;                 //i++一次

  54.         }


  55. }



  56. void UART1_Send_Array(unsigned char send_array[],unsigned char num) //两个参数 一是数组(的数据) 二是数组长度1-255 

  57. {

  58.         //串口发送

  59.         unsigned char i=0;  //定义一个局部变量  用来 发送字符串 ++运算



  60.         while(i

  61.         {

  62.                 

  63.                 USART_SendData(USART1,send_array[i]);        //通过库函数  发送数据

  64.                 while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);  

  65.                 //等待发送完成。   检测 USART_FLAG_TC 是否置1;    //见库函数 P359 介绍


  66.                 i++;  //值 加一         

  67.         }

  68.         

  69. }


关键字:STM32  串口  发送数据 引用地址:STM32 串口发送数据(发送一个字节,以及数组)

上一篇:stm32红外遥控总结
下一篇:STM32红外发射的实现

推荐阅读最新更新时间:2024-03-16 15:42

STM32系列第30篇--DHT11温湿度传感器
电气特性: 工作电压:3.3V-5.5V 工作电流 :平均0.5mA 输出:单总线数字信号 测量范围:湿度20~90%RH,温度0~50℃ 精度 :湿度±5%,温度±2℃ 分辨率 :湿度1%,温度1℃ 其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。DHT11的数据格式为:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和(校验和数据为前四个字节相加)。 数据发送流程: 首先主机发送开始信号(复位),即:拉低数据线,保持t1(至少18ms)时间,然后拉高数据线t2(20~40us)时间,然后读取D
[单片机]
<font color='red'>STM32</font>系列第30篇--DHT11温湿度传感器
STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
一.预备知识 使用51单片机控制IO口相对来说要简单得多,最小系统搭建完毕后直接通过软件往各IO口写“1”或者写“0”即可。但使用STM32控制IO口输入输出却远没有这么容易,经过一个下午的查阅文献及探索后,略微有了头绪。 个人所使用的STM32F103VBT6有100个引脚,其中有五组GPIO(GPIOA…GPIOE),每组有16个GPIO端口(GPIOx_Pin0…GPIOx_Pin15)共80个,每个GPIO端口都有: 两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH); 两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR); 一个32位置位/复位寄存器(GPIOx_BSRR); 一个16位复位寄存器(
[单片机]
<font color='red'>STM32</font>学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
基于STM32单片机的64Mbit单对单通信
简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信。ARM主控芯片STM32F103,flash芯片为MACRONIX INTERNATIONAL的MX25L6465E,64Mbit。 SPI应该是嵌入式外围中最简单的一种应用了吧!一般SPI应用有两种方法:软件仿真,手动模拟产生时序和应用主控芯片的SPI控制器。 一般采用第二种方法比较好,比较稳定。应用主控芯片的SPI控制器,要点:正确的初始化SPI、操作SPI各寄存器和正确理解flash的时序。下面是过程,采用的是STM32F10X自带的库函数 1、初始化:void SpiFlashIniTIalzaTIon(void); 要知道
[单片机]
基于<font color='red'>STM32</font>单片机的64Mbit单对单通信
stm32中断嵌套实例分析
  STM32中断嵌套方法   STM32中断嵌套方法先说明: 所有中断要放在同一个组里, 因为只有组确定了, 4位描述占先式优先级和副优先级的位数才可以确定。   NVIC——Nested Vectored Interrupt Controller(嵌套中断向量控制器)   STM32有43个channel的settable的中断源:AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的4bits。这4个bits用于分配pre-emption优先级和sub优先级,在STM32的固件库中定义如下:   NVIC_PriorityGroup_0 ((u32)0x
[单片机]
<font color='red'>stm32</font>中断嵌套实例分析
STM32f103系列 USART2 串口2通信
最近在做一个工程要用到多个串口同时通讯的,就参考了正点原子的串口通讯例程,发现例程是USART1 串口1的,后面我想改成USART2 串口2的,上网找了资料,要不是不靠谱,要不就是要积分下载。所以后面自己写了一个可用程序来和大家分享! .c文件 #include usart2.h void USART2_Init(u32 My_BaudRate) { GPIO_InitTypeDef GPIO_InitStrue; USART_InitTypeDef USART_InitStrue; NVIC_InitTypeDef NVIC_InitStrue; // 外设使能时钟 RCC_APB2PeriphCl
[单片机]
基于STM32的EMS液晶显示触摸屏设计方案
0 引 言 电动车一直以清洁环保而备受关注,加上能源危机加剧、油价不断上涨,电动车也越来越受到用户的青睐。电动车一般采用锂电池供电,由多个单体电池串联成电池组作为动力电源。但由于各个串联单体电池特性不能保证完全一致,因此相同的电流下充电放电速度也会不同,如果不进行均衡干预,电池寿命会大大缩短,因此需要实时监控各个单体电池的状态、总电压、总电流,根据状态适时进行电池充放电均衡,并且充放电均衡时,均衡状态也要实时进行检测,所以就有了电动车电池能量管理系统(EMS)。实践证明EMS可以有效延长电动车电池使用寿命,是电动车中十分重要的管理系统。 EMS主要包括:信息采集模块、充放电均衡模块、信息集中处理模块以及显示模块。图1为自主研发
[单片机]
基于<font color='red'>STM32</font>的EMS液晶显示触摸屏设计方案
STM32与无源蜂鸣器
使用有源蜂鸣器,只能发出固定的”滴滴“声,当然不能满足于此呀。使用无源蜂鸣器,只要输出不同频率的PWM波,即可发出不同的音符。不同的音符组合起来就是一个曲子了。 1 乐谱简析 1.1 音阶 音阶是音乐必不可少的要素,主要由声音的频率决定。通过给蜂鸣器不同频率的音频脉冲,可以产生不同的音阶,而要产生某频率的音频脉冲,最简单的办法是算出该音频的周期,然后将此周期除以2即为半周期的时间。通过程序控制单片机某引脚半周期为“高”、半周期为“低”,不断交替变换,即可产生该频率的矩形波,接到蜂鸣器上就可发出该频率的声音。若想改变音阶,只需要改变半周期时间即可。下表为各音调音符频率对照表,据此可产生不同音阶的音符。“#”表示半
[单片机]
<font color='red'>STM32</font>与无源蜂鸣器
如何使用STM32实现systick的精确延时
SYSTICK寄存器初始化 void SysTick_Configuration(void) { if (SysTick_Config(SystemCoreClock / 100)) { while (1); } NVIC_SetPriority(SysTick_IRQn, 0x0); } SysTick_Config默认时钟为SysTick_CLKSource_HCLK,所以在这之前使用SysTick_CLKSourceConfig()选择系统时钟不会改变systick的时钟 static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks 》 Sys
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved