STM8S 串列埠應用 UART2 STM8S105

2021-09-07 05:10:49 字數 2445 閱讀 9504

//少說話。多做事,下面是我驗證過沒有問題的串列埠傳送接受資料

//使用mcu stm8s105c6 uart2

//初始化時呼叫:

gpio_deinit(gpiod);

/* configure pd5/6 */

gpio_init(gpiod, gpio_pin_5, gpio_mode_in_pu_no_it);//傳送資料io

gpio_init(gpiod, gpio_pin_6, gpio_mode_in_fl_no_it);//接受資料io

uart2_deinit();

uart2_init(2400,uart2_wordlength_8d,uart2_stopbits_1,uart2_parity_no,\

uart2_syncmode_clock_disable,\

uart2_mode_tx_enable|uart2_mode_rx_enable); //波特率 2400 8位資料

//1個停止位 沒有奇偶校驗 關閉sck 同意串列埠接受和傳送

uart2_cmd(enable);//啟用串列埠

uart2_itconfig(uart2_it_rxne_or,enable);//同意接受中斷

//操作串列埠(傳送接受資料)時呼叫:

if(uart2_getflagstatus(uart2_flag_tc))

uart2_clearitpendingbit(uart2_flag_rxne);//清中斷標誌位

uart2recdata = uart2_receivedata8();//接受中斷資料//後面兩句須要發在

串列埠接受中斷中

void uart2_deinit(void)

void uart2_init(u32 baudrate, uart2_wordlength_typedef wordlength,

uart2_stopbits_typedef stopbits, uart2_parity_typedef parity,

uart2_syncmode_typedef syncmode, uart2_mode_typedef mode)

else

if ((u8)mode & (u8)uart2_mode_rx_enable)

else

/**< set the clock enable bit, lock polarity, lock phase and last bit

clock pulse bits according to uart2_mode value */

if ((u8)syncmode&(u8)uart2_syncmode_clock_disable)

else

}void uart2_cmd(functionalstate newstate)

else

}void uart2_itconfig(uart2_it_typedef uart2_it, functionalstate newstate)

else if (uartreg == 0x02)

else if (uartreg == 0x03)

else

}else

else if (uartreg == 0x02)

else if (uartreg == 0x03)

else

}}u8 uart2_receivedata8(void)

void uart2_senddata8(u8 data)

flagstatus uart2_getflagstatus(uart2_flag_typedef uart2_flag)

else

}else if (uart2_flag == uart2_flag_sbk)

else

}else if ((uart2_flag == uart2_flag_lhdf) || (uart2_flag ==

uart2_flag_lsf))

else

}else

else

}/* return the uart2_flag status*/

return status;

}void uart2_clearflag(uart2_flag_typedef uart2_flag)

/*< clear the lin break detection flag */

else if (uart2_flag == uart2_flag_lbdf)

/*< clear the lin header detection flag */

else if (uart2_flag == uart2_flag_lhdf)

/*< clear the lin synch field flag */

else

}

STM8s 串列埠接收不定長資料

usart rtx typedef usart1 rtx void uart1 initial void interrupt handler tim4 upd ovf irqhandler,23 gpio writereverse gpioc,gpio pin 4 tim4 clearitpendi...

STM8S時鐘配置

1 stm8時鐘說明 stm8上電復位後預設使用內部的高速時鐘,並分頻成為2m用於系統執行。如果我們想要使用外部時鐘,需要進行時鐘切換,切換過程中還需要使用stvp進行晶元選項字的更改。2 stm8s時鐘配置 庫函式版 1 配置內部高速振盪器 hsi 的分頻器 1分頻 clk hsiprescale...

stm8s串列埠奇偶校驗學習筆記

特別注意 stm8的資料長度定義。以前用過stm32的串列埠,不過用的時候一般都是呼叫庫函式,設定波特率,8位資料位,無校驗,1位停止位。傳輸過程中也沒有遇到過太多的問題,最近用stm8s,需要用到奇偶校驗 至於什麼是奇偶校驗,網上資料很多 用了之後發現還是有些地方多需要注意的,下面把遇到的問題記錄...