新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2015-12-29
- 在线时间
- 5 小时
|
8金钱
本帖最后由 umbreLLa 于 2016-1-16 16:33 编辑
我想用32的USART发送一点传感器数据,想发得有序一点儿,于是想到发送中断,然后就设置了串口的TC中断。
这是主程序,里面让灯一直闪
int main(void)
{
SystemInit();
delay_init(72);
NVIC_Configuration();
uart_init(9600);
LED_Init();
while(1)
{
delay_ms(1000);
LED0=!LED0;
}
主要是这个
void uart_init(u32 bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);
//USART1_TX PA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//USART1_RX PA.10
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
USART_InitStructure.USART_BaudRate = bound;
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);
USART_ITConfig(USART1, USART_IT_TC, ENABLE);
// USART1->CR1 |= 0x40;
// USART_ClearFlag(USART1, USART_FLAG_RXNE);
// USART_ClearFlag(USART1, USART_FLAG_TC);
USART_Cmd(USART1, ENABLE);
}
单独开启RXNE中断没事,一切都很正常,只要是开了TC中断,我的整个程序就死了,连灯都不会闪了,仿真我也没看出什么来,不知道怎么回事,是我设置有问题吗
而且不只是TC,连TXE都是这样。
有人遇到过这种情况吗???
请各位大神们帮看看吧!!
原子哥你在哪? T-T 
|
|