久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
stm32 RS485實(shí)現(xiàn)
[打印本頁]
作者:
15667079525
時(shí)間:
2019-3-22 10:30
標(biāo)題:
stm32 RS485實(shí)現(xiàn)
#include "rs485.h"
#include "stm32f10x.h"
#include "misc.h"
#include "stm32f10x_rcc.h"
#if EN_USART2_RX //如果使能了接收
u8 RS485_RX_BUF[64]; //接收緩沖區(qū)
u8 RS485_RX_CNT=0;
//串口1中斷服務(wù)函數(shù)
void USART2_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)
{
res=USART_ReceiveData(USART2);//讀取接收到的數(shù)據(jù)
if(RS485_RX_CNT<64)
{
RS485_RX_BUF[RS485_RX_CNT]=res;
RS485_RX_CNT++;
}
}
}
#endif
void delay(u32 nTimer)
{ int k,j;
for (k=0;k<nTimer;k++)
for (j=0;j<100;j++);
}
//初始化串口
//bound 波特率
void RS485_Init(u32 bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIOA時(shí)鐘
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2時(shí)鐘
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //PA4為推挽輸出
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //PA2復(fù)用推挽
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//PA3浮空輸入
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_Init(GPIOA,&GPIO_InitStructure);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,ENABLE); //復(fù)位串口2
RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,DISABLE);//停止復(fù)位
USART_InitStructure.USART_BaudRate=bound; //波特率
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //收發(fā)模式
USART_InitStructure.USART_Parity=USART_Parity_No; //無奇偶校驗(yàn)
USART_InitStructure.USART_StopBits=USART_StopBits_1;//一個(gè)停止位
USART_InitStructure.USART_WordLength=USART_WordLength_8b;//八位數(shù)據(jù)長度
USART_Init(USART2,&USART_InitStructure);
USART_Cmd(USART2,ENABLE); //使能串口
USART_ClearFlag(USART2, USART_FLAG_TC);//清除標(biāo)志位
#ifdef EN_USART2_RX //如果使能了接收
//USART2 NVIC配置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷分組2 16個(gè)優(yōu)先級,高兩位搶占式,低兩位響應(yīng)
NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn; //使能串口2中斷
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//搶占優(yōu)先級3
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//子優(yōu)先級3
NVIC_Init(&NVIC_InitStructure);
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); //開啟中斷
#endif
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //默認(rèn)為接收模式 ,即端口輸出低電平
}
//RS485發(fā)送len個(gè)字節(jié),其中buf為發(fā)送首地址,len為發(fā)送字節(jié)數(shù)(不要超過64個(gè))
void RS485_Send_data(u8 *buf,u8 len)
{
u8 t;
GPIO_SetBits(GPIOA,GPIO_Pin_4); //設(shè)置為發(fā)送模式
for(t=0;t<len;t++)
{
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
USART_SendData(USART2,buf[t]);
}
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
RS485_RX_CNT=0;
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //設(shè)置為接收模式
}
//RS485查詢接受到的數(shù)據(jù),其中buf為接收緩存首地址,len為讀到的數(shù)據(jù)長度
void RS485_Receive_data(u8 *buf,u8 *len)
{
u8 rxlen=RS485_RX_CNT;
u8 i=0;
*len=0;
delay(5000); //這里還要改??? //等待10ms,連續(xù)超過10ms沒有接收到一個(gè)數(shù)據(jù),就定義為接收結(jié)束
if(rxlen==RS485_RX_CNT&&rxlen)
{
for(i=0;i<rxlen;i++)
{
buf[i]=RS485_RX_BUF[i];
}
}
*len=RS485_RX_CNT;
RS485_RX_CNT=0;
}
作者:
admin
時(shí)間:
2019-3-23 03:29
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
作者:
Nymo
時(shí)間:
2020-3-24 14:11
學(xué)習(xí)一下,謝謝
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲情侣视频
|
欧美亚洲国产日韩
|
www.日韩欧美
|
精品免费
|
久久伊人精品
|
久在线
|
请别相信他免费喜剧电影在线观看
|
成人在线免费观看
|
九色网址
|
国产在线观看一区二区三区
|
欧美一区视频
|
欧美三级电影在线播放
|
一区二区三区av
|
欧美成人一区二免费视频软件
|
欧美黑人激情
|
精品视频在线一区
|
大伊人久久
|
亚洲精品欧美精品
|
色香婷婷
|
亚洲人人
|
日韩精品在线观看视频
|
激情伊人网
|
精品国产乱码久久久久久久久
|
国产精品一区二区在线
|
欧美福利
|
国产一区二区免费
|
在线一级片
|
精品一区久久
|
欧美久久久久久久
|
欧美最猛黑人xxxx黑人
|
热99精品视频
|
久久国产美女视频
|
欧美日韩国产一区
|
中文字幕亚洲精品
|
亚洲国产成人精品久久
|
欧美日韩在线一区二区三区
|
国产一级特黄视频
|
成人国产精品色哟哟
|
欧美国产视频
|
中文字幕日本一区二区
|
欧美激情久久久久久
|