打印

请教香主帮忙---UART4进步去中断

[复制链接]
2965|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
delamu|  楼主 | 2013-5-20 14:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不好意思啊  我没有分 呵呵
我用的是STM32F103VET6  uart4收发都是中断  但是都进不去
时钟 IO  中断  uart4配置函数   中断函数都有   网上搜罗的可能错误  也都避免了  
但是  还是进不去中断   好郁闷  帮帮我吧  指点一二啊
沙发
delamu|  楼主 | 2013-5-20 14:19 | 只看该作者
启动文件用V3.5  有UART4 UART5的定义
没有开启SD功能
void USART4_Configuration(void)
{
USART_InitTypeDef USART_InitStruct;
USART_StructInit(&USART_InitStruct);                                                                                //将结构体设置为缺省状态
USART_InitStruct.USART_BaudRate=9600;                                                                                //波特率设置为9600
USART_InitStruct.USART_WordLength=USART_WordLength_8b;                                                //一帧数据的宽度设置为8bits
USART_InitStruct.USART_StopBits=USART_StopBits_1;                                                        //在帧结尾传输1个停止位
USART_InitStruct.USART_Parity=USART_Parity_No;                                                                //奇偶失能模式,无奇偶校验
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件流控制失能
USART_InitStruct.USART_Mode=USART_Mode_Tx |USART_Mode_Rx;                                        //使能发送/接收使能
USART_Init(UART4, &USART_InitStruct);
USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);                                                                //打开串口2的中断响应函数
//USART_ClearFlag(UART4,USART_FLAG_TC);                                                                                //清除标志位,否则第1位数据会丢失
USART_Cmd(UART4, ENABLE);                                                                                                        //打开USART2
GPIO_ResetBits(GPIOD, GPIO_Pin_5);                                                                                   //设置USART4为数据接收模式
}
void UART4_IRQHandler(void)
{
u8 i;
if (USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)                //接收中断?
        {
        USART_ClearITPendingBit(UART4,USART_FLAG_RXNE);
        Rxbuf4[Rxcnt4]=USART_ReceiveData(UART4);
        if(Rxcnt4++ > 127) Rxcnt4=127;
        if(Rxbuf4[Rxcnt4-2]==0x0d&&Rxbuf4[Rxcnt4-1]==0x0a)
                {
                Txcnt4=Rxcnt4;
                for(i=0;i<Rxcnt4;i++)        Txbuf4[i]=Rxbuf4[i];
                Txbuf4[Rxcnt4]=0;
                Rxcnt4=0;
                rec_f4=1;
                }
        }
       
if (USART_GetITStatus(UART4, USART_IT_TXE) != RESET)        //发送中断?
        {
        if (ptxd4<Txcnt4)
                {
                USART_SendData(UART4,Txbuf4[ptxd4]);
                ptxd4++        ;
                }
        else
                {
                ptxd4=0        ;
                USART_ITConfig(UART4, USART_IT_TXE, DISABLE);
                GPIO_ResetBits(GPIOD, GPIO_Pin_5);                                                                                           //设置UART4为数据接收模式
                }
        }  

使用特权

评论回复
板凳
outstanding| | 2013-5-20 17:18 | 只看该作者
不就是I/o口初始化,然后打开串口时钟,I/O口时钟,配置好,不就可以了么?可以参考 http://download.csdn.net/detail/qiuyunping/5338233
还要看看是否引脚复用

使用特权

评论回复
地板
cjhk| | 2013-5-20 20:22 | 只看该作者
问题应该不是很难   版主出马   一个顶俩   应该可以解决   楼主   帮你顶一个  

使用特权

评论回复
5
rockli| | 2013-5-20 21:59 | 只看该作者
没见到设置中断的代码

使用特权

评论回复
6
delamu|  楼主 | 2013-5-23 09:42 | 只看该作者
呵呵 问题解决了 自己来结贴
网上搜了可能出现的错误  我中断处理函数命名应该是UART4_IRQHandler
另外 硬件上也出了些问题 现在一切正常了
谢谢各位的支持

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

22

帖子

0

粉丝