void USART1_IRQHandler(void)
{
unsigned char RxData;
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
RxData=https://bbs.csdn.net/topics/USART_ReceiveData(USART1);
RxData = RxData + 1;
USART_SendData(USART1,RxData);
}
}
程式能發送出去,就是中斷接收啥的,接收不到
麻煩會的的大哥看看寫的是什么鬼
uj5u.com熱心網友回復:
初始化函式呢?uj5u.com熱心網友回復:
#include "stm32f10x.h"
#include "stdio.h"
void USART1_Config(void);
void Usart1_SendBye(u16 Bye);
void Usart1_SendMoreBye(u16 Bye,u16 Len);
void Usart1_SendString(char * buf1);
void Usart1_SendHalfWord(uint16_t ch);
void Usart1_IRQHandler(void);
這個嗎?
uj5u.com熱心網友回復:
uart_init函式,while陳述句之前,你呼叫了些啥?uj5u.com熱心網友回復:
[/code]
#include "Usart.h"
void USART1_Config()
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //TX
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //RX
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStructure);
USART_InitStructure.USART_BaudRate = 115200;
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(USART1, &USART_InitStructure);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //ê1?ü?óê??D??
USART_Cmd(USART1, ENABLE);
}
//USART1 SEND A BYE
void Usart1_SendBye(u16 Bye)
{
USART_SendData(USART1,Bye); //USART1 ·¢?íò???×??ú
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); //?ì2aUSART1ê?·?·¢?ííê±?
}
//USART1 SEND MORE BYE
void Usart1_SendMoreBye(u16 Bye,u16 Len)
{
int count;
for(count=0;count<Len;count++)
{
Usart1_SendBye(Bye);
}
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
}
void Usart1_SendString(char * buf1)
{
u8 i=0;
while (1)
{ if (buf1[i]!=0)
{ USART_SendData(USART1, buf1[i]);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){};
i++;
}
else return;
}
}
void Usart1_SendHalfWord(uint16_t ch)
{
uint8_t temp_h, temp_l;
/* è?3???°??? */
temp_h = (ch&0XFF00)>>8;
/* è?3?μí°??? */
temp_l = ch&0XFF;
/* ·¢?í??°??? */
USART_SendData(USART2,temp_h);
while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
/* ·¢?íμí°??? */
USART_SendData(USART2,temp_l);
while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
}
void Usart1_IRQHandler()
{ unsigned char RxData;
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
RxData=https://bbs.csdn.net/topics/USART_ReceiveData(USART1);
RxData = RxData + 1;
USART_SendData(USART1,RxData);
}
}[code=c]#include "delay.h"
#include "Usart.h"
int main(void)
{
delay_Config();
USART1_Config();
USART2_Config();
Usart1_SendString("Output ok£?\n");
delay_ms(9000);
Usart1_SendString("Output Over£?\n");
while(1)
{
}
}
就這樣
uj5u.com熱心網友回復:
1、AF時鐘你應該是在別處開了2、USART_ClearITPendingBit(USART1, USART_IT_RXNE);這句不需要,呼叫USART_ReceiveData(USART1); 會自動清除
3、記得例程里是 while,沒必要改為 if
4、USART_SendData(USART1,RxData); 接收中斷里不要用這種東西,寫個標志位比如: flag = true; 在main while 判斷標志位
if(flag){
flag = false;
USART_SendData(USART1,RxData);
}
5、整不明白的,就不要隨意改例程
uj5u.com熱心網友回復:
能發一段代碼我看看嗎
uj5u.com熱心網友回復:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=11814&extra=page%3D1http://www.armbbs.cn/forum.php?mod=viewthread&tid=3&extra=page%3D1
http://www.openedv.com/docs/index.html
例程多的是,正點原子,安富萊,等等多去那些論壇看看
uj5u.com熱心網友回復:
首先保證硬體沒有問題,示波器看一下RX線上有沒有波形uj5u.com熱心網友回復:
RXEN為沒有使能?uj5u.com熱心網友回復:
5L講的很詳細,不過先檢查下硬體,看通不通!這個最重要!轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/27362.html
標籤:單片機/工控
上一篇:altium designer 為什么布線顯示干涉呢?
下一篇:學習STM32單片機記錄(1)
