前面對于IO口由于外面資料很多,只是寫了一些自己的感想,僅此而已,沒有別的意思。
今天想了很久才寫自己才開始寫,寫的不好,大家可以指出,我也好改進。
對于單片機最基礎了出了IO口,就是通信方式了,說的通信方式不得不想到串口通信。
我自己是學習探索者stm32f4的,這里我就分享自己的感想和自己的問題。
對于外設的使用首先必然是時鐘的使能。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//USART時鐘使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//IO時鐘使能
然后就是把IO復用
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
接下來就是初始化,在這里我遇到了一個問題
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//復用模式
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
上面是探索者的程序
可是這樣寫就不行
GPIO_InitTypeDef *GPIO_InitStructure;
GPIO_InitStructure->GPIO_Mode=GPIO_Mode_AF;//復用模式
GPIO_InitStructure->GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure->GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure->GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitStructure->GPIO_Speed=GPIO_Speed_100MHz;
GPIO_Init(GPIOA,GPIO_InitStructure);
個人c語言能力有限,如果有人知道,請指出
然后就是串口相關的初始化
設置波特率,奇偶校驗,停止位等
USART_InitStructure.USART_BaudRate=115200;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_InitStructure.USART_Parity=USART_Parity_No;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART_InitStructure);
使用它必然要使能串口
USART_Cmd(USART1,ENABLE);//使能串口
這樣串口的基本配置就完成了
單片機嵌入式技術交流 511426545
|