91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

stm32f103的串口通信之串口輪詢實驗

發布時間:2020-06-17 21:03:37 來源:網絡 閱讀:6993 作者:韓A 欄目:編程語言

     經過兩天的艱苦戰斗,經歷了心平氣和-->煩躁-->放任自由-->心平氣和,我今天晚上的最后一分鐘,終于將它搞定了!

      首先闡述問題:在把usart.c文件里有關中斷的部分注釋掉以后,使用輪詢模式進行串口通訊,但是在這過程中,遇到的問題是只能顯示第一個字符;

     首先說明原因:在使用輪詢模式時,不要使用延時函數,也不要使用中斷,如使用printf()這樣的函數;

     如下是完整代碼;
     main.c
#include "stm32f10x.h"
#include "delay.h"
#include "lcd.h"
#include <stdio.h>
#include "usart.h"
#include "circular_buffer.h"

//function declaration;
void system_isruning(void);
void str_array_init(u8 a[], int len);

int main()
{
	

	int j = 0;
  delay_init();
	lcd_init();
  USART1_Configuration();
	
	for(j = 0; j < 100; j++)
	{
   		m_buf[i] = '\0';   //m_buf[]來自circular_buffer.h;
	}

	while(1)
	{
		//system_isruning();
		is_recevied();
		//delay_ms(1000);
		//LCD1602_WriteString(str,2);
  }
}




void system_isruning(void)
{
	RCC->APB2ENR |= 1 << 5;
	GPIOD ->CRH &= 0xFFFFFFF0;
	GPIOD ->CRH |= 0x00000003;
	
  GPIOD ->ODR &= ~(1<<8);
	delay_ms(100);
	GPIOD ->ODR |= (1<<8);
	delay_ms(100);
	
}


輪詢頭文件:

#ifndef CIRCULAR_BUFFER_H
#define CIRCULAR_BUFFER_H

#include "sys.h"
#define  BUF_LEN  100

void is_recevied(void);


static u8 m_buf[BUF_LEN];
static int i = 0;

#endif



輪詢實現.c

#include "circular_buffer.h"
#include "sys.h"
#include "stm32f10x_usart.h"
#include <stdio.h>
#include "delay.h"


void is_recevied(void)
{
	 u8 x =  0;

       while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)  != RESET)   
	{
  		 x = USART_ReceiveData(USART1);
       USART_SendData(USART1, x); 
		  // save into the receive buffer;
		  i = i % BUF_LEN;  //
		  m_buf[i] = x;
		  i++;
      //printf("received one data! x == %c \n",x);
      //使用輪詢模式不能使用printf,因為此函數是一個異步中斷函數;
} 
	
	
	第一次寫技術博客,與君共勉,愿能助君一臂之力。
	在串口方面的學問很深,以后需要虛心安心鉆研!
	
	每日弟子規:
	
	弟子規,圣人訓,首孝悌,次謹信
	泛愛眾,而親仁,有余力,則學文
	
	自己還不夠博愛,不夠自信,唯有多行善事,才能自信滿滿,才可神采飛揚,我很期待那一天;
	自己的努力的第一天!
	加油!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

竹溪县| 井研县| 疏勒县| 白山市| 都兰县| 大石桥市| 璧山县| 景洪市| 博罗县| 荔浦县| 阜阳市| 临猗县| 昭通市| 栖霞市| 贺兰县| 西丰县| 屯昌县| 顺昌县| 阿拉尔市| 西和县| 新野县| 邛崃市| 同德县| 大兴区| 安平县| 福清市| 方正县| 湖北省| 诏安县| 永新县| 潞城市| 房山区| 城固县| 罗田县| 汤阴县| 青冈县| 子长县| 古蔺县| 奉贤区| 潼关县| 东乌珠穆沁旗|