久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32一種通用串口功能實現(xiàn)
[打印本頁]
作者:
gjj19890503
時間:
2021-11-30 11:06
標題:
STM32一種通用串口功能實現(xiàn)
#include "uart.h"
void uart_init(uart_def *uart)
{
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
if (uart->uart_ptr == USART1)// 使能時鐘
{
RCC_APB2PeriphClockCmd(uart->gpio_rx_rcc | uart->gpio_tx_rcc | uart->uart_rcc, ENABLE);
}
else // USART2 USART3 UART4 UART5
{
RCC_APB2PeriphClockCmd(uart->gpio_rx_rcc | uart->gpio_tx_rcc, ENABLE);
RCC_APB1PeriphClockCmd(uart->uart_rcc, ENABLE);
}
// tx gpio 復(fù)用推挽輸出
GPIO_InitStructure.GPIO_Pin = uart->gpio_tx_pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(uart->gpio_tx, &GPIO_InitStructure);
//rx gpio 浮動輸入
GPIO_InitStructure.GPIO_Pin = uart->gpio_rx_pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(uart->gpio_rx, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = uart->baudrate;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
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(uart->uart_ptr, &USART_InitStructure);
if (uart->uart_ptr == USART1) //串口1開啟空閑中斷 20190715 nl668模塊通訊
{
USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);
// USART_DMACmd(USART1, USART_DMAReq_Rx, ENABLE); //開啟串口DMA接收
}
else if(uart->uart_ptr == USART2) //串口2開啟空閑中斷 20190725 cc2530通訊
{
USART_ITConfig(USART2, USART_IT_IDLE, ENABLE);
}
// if(uart->uart_ptr != USART1) //串口1使用的DMA+串口空閑中斷 不需要開啟接收中斷
USART_ITConfig(uart->uart_ptr, USART_IT_RXNE, ENABLE); //使能接收中斷
USART_Cmd(uart->uart_ptr, ENABLE); //使能USARTx
NVIC_InitStructure.NVIC_IRQChannel = uart->irqn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
舉例uart1的功能實現(xiàn)
static uart_def uart;
void uart1_init(uint32_t baudrate)
{
uart.uart_rcc = RCC_APB2Periph_USART1;
uart.uart_ptr = USART1;
uart.gpio_rx_rcc = RCC_APB2Periph_GPIOA;
uart.gpio_rx = GPIOA;
uart.gpio_rx_pin = GPIO_Pin_10;
uart.gpio_tx_rcc = RCC_APB2Periph_GPIOA;
uart.gpio_tx = GPIOA;
uart.gpio_tx_pin = GPIO_Pin_9;
uart.irqn = USART1_IRQn;
uart.baudrate = baudrate;
uart_init(&uart);
}
void uart1_writeb(uint8_t byte)
{
while (USART_GetFlagStatus(uart.uart_ptr, USART_FLAG_TC) == RESET);
USART_SendData(uart.uart_ptr, byte);
while (USART_GetFlagStatus(uart.uart_ptr, USART_FLAG_TXE) == RESET);
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美高清视频一区
|
青青伊人久久
|
欧美一区二区三区久久精品
|
精品国产乱码久久久久久丨区2区
|
91精品国产综合久久久亚洲
|
91久久夜色精品国产网站
|
成人精品毛片
|
免费色网址
|
中文字幕一区在线观看视频
|
免费黄色网址视频
|
国产精品一区二区在线
|
色综合国产
|
日日摸日日添日日躁av
|
女同久久另类99精品国产
|
99re视频精品
|
91视频www.
|
精品二区
|
亚洲国产69
|
国产精品成人一区二区三区夜夜夜
|
国产精品久久久久久久免费大片
|
欧美色人
|
国产视频1区
|
a级在线免费观看
|
亚洲成人天堂
|
国产精品99久久久久久久vr
|
久久精品视频12
|
琪琪午夜伦伦电影福利片
|
久久成人av
|
91在线视频在线观看
|
盗摄精品av一区二区三区
|
欧美日韩综合精品
|
亚洲天堂网站
|
av片毛片
|
欧美在线日韩
|
日韩电影免费在线观看中文字幕
|
青青久久av北条麻妃海外网
|
毛片视频网站
|
久久久久网站
|
欧美一区二区三区在线视频
|
99视频在线播放
|
视频在线观看亚洲
|