新手上路
- 积分
- 20
- 金钱
- 20
- 注册时间
- 2017-4-17
- 在线时间
- 22 小时
|
5金钱
主函数里面发送不出去 ,因为什么??、 哪位大神解释下
void uart2_init(u32 bound)
{
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //使能USART2,GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );
//USART1_TX GPIOA.2
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.2
//USART1_RX GPIOA.3初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA.3
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.3
//Usart2 NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
//USART 初始化设置
USART_InitStructure.USART_BaudRate = bound;//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
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(USART2, &USART_InitStructure); //初始化串口2
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启串口接受中断
// USART_ITConfig(USART2 ,USART_IT_TXE,ENABLE);
USART_Cmd(USART2, ENABLE); //使能串口2
}
int main()
{
delay_init(); //延时函数初始化
led_init();
uart2_init(9600); //串口初始化为9600
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
LED0 =0;
while(1)
{
// printf("3");
USART2->DR=2+48;
while(USART2 ->SR & 0x40==0);
LED0 =!LED0 ;
delay_ms(300);
}
|
最佳答案
查看完整内容[请看2#楼]
你的两个uart都在一个函数里面,没有看到你调用
USART_Init(USART1, &USART_InitStructure); // 写入初始化信息
USART_Cmd(USART1, ENABLE); /* 使能 USART1 */
你主函数的printf重定向到串口了吗?参考我的:
/*
* 函数名: fputc
* 描述 : 重定向 c 库函数 printf 到 USART1
*/
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (unsigned char) ch); // 将1字节数据发往串口寄存器,print ...
|