• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 消費電子 > 設計應用 > STM32 MSN&Dial實驗分析及原理

    STM32 MSN&Dial實驗分析及原理

    作者: 時間:2009-07-30 來源:網絡 收藏

    {word=USART_ReceiveData(USART3);
    if(word==''>'')
    break;
    }
    Serial_PutString(We are the best team!x1a); //編寫短信內容
    while(1)
    {word=USART_ReceiveData(USART3);
    if(word==''n'')
    break;
    }
    }

    本文引用地址:http://www.czjhyjcfj.com/article/166918.htm

    五.程序深入
    5.1
    需要用到的每一只引腳都需要使能引腳時鐘,本程序需要用到三個按鍵以及一個串口(USTAR3),其中兩

    個按鍵在PC口,一個按鍵在PA口,程序在RCC_Configuration()函數里面實現:
    /*使能GPIOx 時鐘 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);

    /* 使能USARTx 時鐘 */
    RCC_APB1PeriphClockCmd(RCC_APB_Periph_USARTx, ENABLE);

    /* 使能按鍵引腳時鐘 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO| RCC_APB2Periph_GPIO_BUTTON |

    RCC_APB2Periph_GPIO_WKUP , ENABLE);

    5.2
    每一只引腳都有復用功能,所以用到的每一只引腳都需要配置引腳的功能,程序在

    GPIO_Configuration()函數里面實現:

    GPIO_InitTypeDef GPIO_InitStructure;

    GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);

    /* 設置USARTx_Tx 為復用推挽輸出,頻率為50MHz */
    GPIO_InitStructure.GPIO_Pin = GPIO_TxPin;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOx, GPIO_InitStructure);

    /* 設置USARTx_Rx為浮空輸入,頻率為50MHz */
    GPIO_InitStructure.GPIO_Pin = GPIO_RxPin;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOx, GPIO_InitStructure);

    /* 設置按鍵引腳為浮空輸入,頻率為2MHz */
    GPIO_InitStructure.GPIO_Pin = BUT_LEFT | BUT_RIGHT | BUT_UP | BUT_DOWN | BUT_Tamper |

    BUT_SEL;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_Init(GPIO_KEY, GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = BUT_WKUP;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIO_WKUP, GPIO_InitStructure);

    引腳的配置有三項,Pin、Speed與Mode,在設置USARTx_Tx時把三項都設置了,而在設置USART_Rx時卻只設置

    了兩項,其中Speed沒有設置,則保持上一次設置的狀態,也就是在設置USART_Tx時的50MHz。同理在設置上

    下左右與Tamper、SEL鍵對應引腳時都設置了三項,而設置WKUP鍵對應引腳時只是配置了兩項。
    5.3 在主函數的死循環里面最后一步是調用delay()函數來延遲100ms,作用是防止按鍵的抖動。而delay

    函數的實現是通過調用SysTick時鐘源溢出中斷來實現的,SysTick時鐘源在main函數的開頭設置了為1ms中斷

    一次。
    5.4 主程序是通過串口3和模塊通信的,而波特率設置為115200,程序如下:

    USART_InitStructure.USART_BaudRate = 115200;
    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;

    其實模塊也有其通訊頻率的,假如兩者的頻率不同,那么就不能達到通訊的目的,現在就讓我們來看看如何查看和修改模塊的通訊頻率。硬件的連接很簡單,只需要把手機模塊的電源接上,插上手機模塊和手機卡,用USB轉串口線把電腦和手機模塊連接起來,打開SecureCRT軟件,并設置好通訊頻率。假如軟件設置的通信頻率和手機模塊的實際頻率不同,那么在軟件的窗口就會出現亂碼。現在有一個疑問啦,假如手機模塊剛買回來,不知道通信頻率怎么辦,不用擔心,手機模塊如果沒經設置,它的通訊頻率是默認第一收數據的數據頻率。下面舉例子把手機模塊的通訊頻率由115200改為57600,

    具體指令at+ipr?的作用為查看當前手機模塊的通訊頻率,at+ipr=115200為設置手機模塊的當前通訊頻率。回車之后,再次輸入數據就會出現亂碼,因為手機模塊的通訊頻率已經修改了,現在只需停止串口軟件通信,然后把軟件的通訊頻率改為115200就可以了。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 葫芦岛市| 长治县| 鄄城县| 年辖:市辖区| 项城市| 蒲城县| 合山市| 乌什县| 张家口市| 元氏县| 江城| 台湾省| 鹿邑县| 扶余县| 惠州市| 徐州市| 股票| 济源市| 罗平县| 广西| 昂仁县| 大厂| 宁城县| 衡阳县| 锦屏县| 蓬安县| 江陵县| 渝北区| 五大连池市| 长沙市| 泉州市| 元谋县| 玉山县| 西昌市| 滁州市| 前郭尔| 读书| 开远市| 泗阳县| 宜城市| 嘉荫县|