串行通信
① UART(通用異步全雙工收發(fā)器):
? ? ? ? (1)串行:多個(gè)時(shí)鐘周期內(nèi),每一時(shí)鐘周期采樣一位有效數(shù)據(jù)论矾,通信速度慢翁锡,抗干擾能力強(qiáng)掐松;
? ? ? ? (2)并行:多個(gè)時(shí)鐘周期內(nèi)众旗,每一時(shí)鐘周期采樣一組有效數(shù)據(jù)罢杉,通信速度快,抗干擾能力弱贡歧,資源占用多滩租;
② 如何定義
? ? ? ? (1)同步:有時(shí)鐘線,誤差小利朵,占用資源多律想;
? ? ? ? (2)異步:無(wú)時(shí)鐘線,傳輸速率高绍弟;
? ? ? ? (3)單工:?jiǎn)我环较騻鬏敂?shù)據(jù)技即;
? ? ? ? (4)雙工:
????????????????????????????1、全雙工:收發(fā)同時(shí)晌柬;
? ? ? ? ? ? ? ? ? ? ? ? ? ? 2姥份、半雙工:一根線實(shí)現(xiàn)收發(fā);
?③ UART模型:
? ? ? ? 協(xié)議:RS232:
????????????????????????????????(1)電氣特性:DB9的235接口年碘;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)幀格式;
④ 數(shù)據(jù)幀格式
? ? ? ? (1)起始位:1位低電平展鸡;
? ? ? ? (2)有效數(shù)據(jù)位:8或9位屿衅;
? ? ? ? (3)校驗(yàn)位(奇或偶):1位校驗(yàn)位;
? ? ? ? (4)結(jié)束位:0.5 / 1 / 1.5 / 2 位高電平莹弊;
⑤ 傳輸速率
? ? ? ? (1)bit / s? ? ? ? ? ? ? ? 比特率涤久;
? ? ? ? (2)B / s? ? ? ? ? ? ? ? ?波特率涡尘;
⑥ 任務(wù):使用串行通信控制燈開關(guān)
? ? ? ? 代碼:
#include "Key_Use.h"
#define MAX 20
#define Timeout 0xFFFF
static u32 j=MAX, i=0, k=0, l=0, a=0;
uint8_t UART1_Ctrl[6][6]={"led_r","led_g","led_b","bee_o","led__","bee__"};
uint8_t Mesage[6]={"\0"};
HAL_StatusTypeDef UART1_SendStr(uint8_t *buf,uint32_t size)
{
return HAL_UART_Transmit(&huart1, buf, size, Timeout);
}
HAL_StatusTypeDef UART1_ResvStr(uint8_t *buf,uint32_t size)
{
return HAL_UART_Receive(&huart1, buf, size, Timeout);
}
void UART1_LEDCtrl()
{
while(1)
{
if(UART1_ResvStr((uint8_t *)Mesage,5) == HAL_OK)
{
if(memcmp(Mesage,UART1_Ctrl[0],5) == 0)
{
LED_G_OFF();
LED_B_OFF();
LED_R_ON();
}
///////////////////////////////////////
if(memcmp(Mesage,UART1_Ctrl[1],5) == 0)
{
LED_R_OFF();
LED_B_OFF();
LED_G_ON();
}
///////////////////////////////////////
if(memcmp(Mesage,UART1_Ctrl[2],5) == 0)
{
LED_G_OFF();
LED_R_OFF();
LED_B_ON();
}
///////////////////////////////////////
if(memcmp(Mesage,UART1_Ctrl[3],5) == 0)
BEEP_ON();
///////////////////////////////////////
if(memcmp(Mesage,UART1_Ctrl[4],5) == 0)
{
LED_G_OFF();
LED_R_OFF();
LED_B_OFF();
}
///////////////////////////////////////
if(memcmp(Mesage,UART1_Ctrl[5],5) == 0)
BEEP_OFF();
}
memset(Mesage,0,6);
}
}