十一哥

十一哥

0个粉丝

29

问答

4

专栏

23

资料

十一哥  发布于  2020-10-19 11:52:42
采纳率 0%
29个问答
2183

单片机STM32F103 将UART4设置为使能中断则程序无法运行

单片机STM32F103 将串口UART4设置为使能中断则程序无法运行,注释掉USART_ITConfig( UART4, USART_IT_RXNE, ENABLE)程序就可以运行了,为什么会这样呢?

UART4配置代码:

void USART4_Init( unsigned int baud )
{
                GPIO_InitTypeDef gpioInitStruct;
                USART_InitTypeDef usartInitStruct;
                NVIC_InitTypeDef nvicInitStruct;

                RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );
                RCC_APB1PeriphClockCmd( RCC_APB1Periph_UART4, ENABLE );

                gpioInitStruct.GPIO_Pin = GPIO_Pin_10;
                gpioInitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
                gpioInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_Init( GPIOC, &gpioInitStruct );

                gpioInitStruct.GPIO_Pin = GPIO_Pin_11;
                gpioInitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
                gpioInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_Init(GPIOC, &gpioInitStruct);

                usartInitStruct.USART_BaudRate = baud;               
                usartInitStruct.USART_WordLength = USART_WordLength_8b;               
                usartInitStruct.USART_StopBits = USART_StopBits_1;                               
                usartInitStruct.USART_Parity = USART_Parity_No;                                       
                usartInitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;               
                usartInitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;               
                USART_Init( UART4, &usartInitStruct );

                USART_Cmd( UART4, ENABLE );                                                                                                       

//                USART_ITConfig( UART4, USART_IT_RXNE, ENABLE);                                                // 带着这行代码就无法运行,注释掉后可以运行!!!!!!
                USART_ClearFlag( UART4, USART_FLAG_TC );                                                                        

                nvicInitStruct.NVIC_IRQChannel = UART4_IRQn;
                nvicInitStruct.NVIC_IRQChannelPreemptionPriority = 3;                       
                nvicInitStruct.NVIC_IRQChannelSubPriority = 3;                                               
                nvicInitStruct.NVIC_IRQChannelCmd = ENABLE;
                NVIC_Init(&nvicInitStruct);

}
我来回答
回答3个
时间排序
认可量排序

嗯哼##

0个粉丝

24

问答

0

专栏

23

资料

嗯哼## 2020-10-19 12:00:38
认可0

应该是.s启动文件错误吧

susan

0个粉丝

20

问答

3

专栏

48

资料

susan 2020-10-19 12:00:57
认可0

这种问题很明显,和你的.s启动文件没有关系的,你把中断打开程序就没法运行,说明你的串口接收中断服务程序没有写或者ISR内部指针跑飞了,如果你写了内部也没什么错误,那就说明你的中断向量表和你的ISR对应不上

安防监控-刘

0个粉丝

29

问答

3

专栏

43

资料

安防监控-刘 2020-10-19 12:01:09
认可0

忘了写中断程序也会出现这个问题

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区