找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5067|回复: 2
收起左侧

STM32如何主动串口发送数据

[复制链接]
ID:388780 发表于 2018-9-24 16:24 | 显示全部楼层 |阅读模式
看了好多串口通信的程序,都是串口接收数据后进入中断然后发送,我不要接收数据这部分啊,小白求一个主动一直发送自定义的数据给串口程序,前面给的程序自己改总没有用

回复

使用道具 举报

ID:290170 发表于 2018-9-24 17:47 | 显示全部楼层
stm32看你是用什么的历程,如果是正点原子的话,本来串口一就可以通过快速把数据存入BUF中发送出去,不用等接受到数据,下面附上在其他串口都可以使用的发送函数,STM32f103 f409标准库通用的  void USART3_IRQHandler(void) {         u8 res;                       if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//接收到数据         {                          res =USART_ReceiveData(USART3);                                  gizPutData(&res, 1);//数据写入到缓冲区         }                                  }       void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch) {         /* 发送一个字节数据到USART */         USART_SendData(pUSARTx,ch);                          /* 等待发送数据寄存器为空 */         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);         }     //初始化IO 串口3 //pclk1:PCLK1时钟频率(Mhz) //bound:波特率           void usart3_init(u32 bound) {            NVIC_InitTypeDef NVIC_InitStructure;         GPIO_InitTypeDef GPIO_InitStructure;         USART_InitTypeDef USART_InitStructure;          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);                               //GPIOB时钟         RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);                          //串口3时钟使能           USART_DeInit(USART3);  //复位串口3         //USART3_TX   PB10     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                                     //PB10     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                                       //复用推挽输出     GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //初始化PB10         //USART3_RX          PB11     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                          //浮空输入     GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //初始化PB11                  USART_InitStructure.USART_BaudRate = bound;                                    //波特率一般设置为9600;         USART_InitStructure.USART_WordLength = USART_WordLength_8b;                    //字长为8位数据格式         USART_InitStructure.USART_StopBits = USART_StopBits_1;                         //一个停止位         USART_InitStructure.USART_Parity = USART_Parity_No;                            //无奇偶校验位         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;                       //收发模式            USART_Init(USART3, &USART_InitStructure);       //初始化串口3             USART_Cmd(USART3, ENABLE);                      //使能串口                   //使能接收中断     USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);  //开启中断                     //设置中断优先级         NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//抢占优先级3         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //子优先级3         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能         NVIC_Init(&NVIC_InitStructure);        //根据指定的参数初始化VIC寄存器          }   

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:402056 发表于 2018-9-25 10:56 | 显示全部楼层
调用串口发送函数,放在主循环里

USART1发.rar

2.85 MB, 下载次数: 155

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表