调试单片机要么仿真,要么串口打印,串口printf打印调试信息比较直观,我一般也比较倾向用串口打印调试信息。
用L1简单的实现串口收发,以及printf打印:
1)串口配置代码:
- GPIO_InitTypeDef GPIO_InitStructure;
- USART_InitTypeDef USART_InitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
-
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
-
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);
-
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
- // GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz;
- GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //ÍÆÍìÊä³
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //±ØÐëΪAF
- // GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //1λPreemptionPriority£¬4λSubPriority
- NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //±ØÐëÏÈʹÄÜ£¬²ÅÄÜÅäÖüĴæÆ÷
-
- USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
-
- USART_InitStructure.USART_BaudRate=115200;
- USART_InitStructure.USART_Mode=USART_Mode_Rx | USART_Mode_Tx;
- USART_InitStructure.USART_StopBits=USART_StopBits_1;
- USART_InitStructure.USART_Parity=USART_Parity_No;
- USART_InitStructure.USART_WordLength=USART_WordLength_8b;
- USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
- USART_Init(USART2,&USART_InitStructure);
-
- USART_Cmd(USART2,ENABLE);
复制代码 2)串口中断接收:
- void USART2_IRQHandler()
- {
- uint8_t data;
-
- if(USART_GetITStatus(USART2,USART_IT_RXNE)== SET)
- {
- USART_ClearITPendingBit(USART2,USART_IT_RXNE);
- data=USART_ReceiveData(USART2);
- // USART_SendData(USART2,data);
- if(buff_cnt>255)
- return;
- if(data==0xFE&&buff_head==0)
- {
- uart_buff[buff_cnt++]=data;
- buff_head=1;
- }
- if(buff_head==1&&data!=0xfe) //·ÀֹͷװÁ½´Î
- {
- uart_buff[buff_cnt++]=data;
- if(data==0xEF)
- {
- data_flag=1;
- buff_head=0;
- }
- }
- }
- }
复制代码 3)工程代码
L1.rar
(5.22 MB, 下载次数: 97)
|
谢谢分享