打印

STM32F030F4 当UART发字符串时,LED灯就不闪了,当UART发HEX数组时LED能正常闪烁

[复制链接]
295|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
白闻不如怡见|  楼主 | 2019-10-31 16:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "stm32f0xx.h"

void GPIO_CSH()
{
        GPIO_InitTypeDef GPIO_InitStruct;
        USART_InitTypeDef USART_InitStruct;
        
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
        

        GPIO_Init(GPIOA, &GPIO_InitStruct);
        GPIO_PinLockConfig(GPIOA,GPIO_Pin_4);        
        
        
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
        

        GPIO_Init(GPIOA, &GPIO_InitStruct);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);        
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
        
        USART_InitStruct.USART_BaudRate=9600;
        USART_InitStruct.USART_WordLength=USART_WordLength_8b;
        USART_InitStruct.USART_StopBits=USART_StopBits_1;
        USART_InitStruct.USART_Parity=USART_Parity_No;
        USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
        USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
        
        USART_Init(USART1,&USART_InitStruct);
        USART_Cmd(USART1, ENABLE);
        
}

void delay()
{
        unsigned int k;
        for(k=0;k<0xfffff;k++);
}

unsigned char tab[]={"江苏省南京市"};
void UART_FS(unsigned char *p)
{

        while(*p !='\0')
        {
                USART_SendData(USART1, *p);
                while( USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
                p++;
        }
}

unsigned char test[200];
void UART_Send()
{
        unsigned char k;
        for(k=0;k<200;k++)
        {
                test[k]=k;
                USART_SendData(USART1, test[k]);
                while( USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);        
        }
}
int main()
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
        
        GPIO_CSH();
        while(1)
        {
                GPIO_SetBits(GPIOA, GPIO_Pin_4);
               
                USART_SendData(USART1, 0xaa);        //发单个字节
                while( USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
               
                delay();
                GPIO_ResetBits(GPIOA, GPIO_Pin_4);
               
                UART_Send();                //发字HEX数组
        //        UART_FS(tab);                //发字符串
                delay();
        }
}

KEIL 5.17 环境,当代码中注释掉的发送字符串功能不用时,UART也能正常发HEX字节和HEX数组,同时在PA4端口的LED灯能正常闪烁,当去掉代码中注释后,UART也能发HEX数组和字符串,就是LED灯不闪了,不知道是什么原因?

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

384

主题

384

帖子

0

粉丝