OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2526|回复: 3

串口程序

[复制链接]

6

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2015-9-30
在线时间
25 小时
发表于 2016-1-4 19:12:52 | 显示全部楼层 |阅读模式
    老师您好,在我的程序里面涉及串口的调试,初始化代码如下:
void uart1_init(void)
{
        GPIO_InitTypeDef                GPIO_InitStructure;
        USART_InitTypeDef                USART_InitStructure;
        NVIC_InitTypeDef                NVIC_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        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;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);               
       
       
        USART_InitStructure.USART_BaudRate  = 115200;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx| USART_Mode_Tx;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_StopBits = USART_StopBits_1 ;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_Init(USART1, &USART_InitStructure);
       
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
       
        NVIC_Init(&NVIC_InitStructure);       
       
        USART_ITConfig(USART1,USART_IT_TC, ENABLE);
       
        USART_Cmd(USART1, ENABLE);
}



    里面还有printf函数的应用
int fputc(int ch, FILE *f)
{
        USART_SendData(USART1, (uint8_t) ch);

        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
        {}          
    return ch;
}       


主函数里面如下:
int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
       
        delay_init();
        led_init();
        beep_init();
        key_init();
        exti_init();
        uart1_init();

        //printf("\r\n shi yan \r\n");
       
        while(1)
        {
                //printf("\r\n »¶ó-ê1óà \r\n");
                printf("\r\n shi yan= \r\n");
                delay_ms(5000);
        }
}


发现程序不能运行,将这句话          USART_ITConfig(USART1,USART_IT_TC, ENABLE);   屏蔽了,程序运行正常?我想问问这句话与哪个地方冲突使得程序无法运行呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2016-1-4 20:13:55 | 显示全部楼层
开了中断,却没有处理函数。。。。
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-1-4 20:56:20 | 显示全部楼层
发帖违规,注意一下
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

6

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2015-9-30
在线时间
25 小时
 楼主| 发表于 2016-1-5 09:16:23 | 显示全部楼层
jermy_z 发表于 2016-1-4 20:13
开了中断,却没有处理函数。。。。

     我也猜想是因为开中断却没处理函数,后来就在程序里面加入了中断处理函数,发现还是不行,我想可能是我的中断处理函数没写对,请问您能写个例子作为参考吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 21:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表