新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 智林STM32程序源代碼的分析和整理03

        智林STM32程序源代碼的分析和整理03

        作者: 時間:2016-11-28 來源:網絡 收藏
        一、Systick的配置

        1、簡單介紹

        本文引用地址:http://www.104case.com/article/201611/322960.htm

        這是一個系統定時器,時鐘源可以為AHB時鐘,也可設置為SysClk/8。使用時先設定初始值,然后每來一個時鐘,減去1,計數器為0時標志置位,也可觸發中斷。

        在我的程序中,Systick用作usos的工作時鐘。

        2、我的源程序

        void SysTick_Config(void){

        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

        SysTick_SetReload(72000*10);

        //72MHz的頻率下,計數72000需要1ms。

        SysTick_ITConfig(ENABLE);

        }

        下面是中斷服務程序

        void SysTickHandler(void){

        OS_CPU_SRcpu_sr;

        OS_ENTER_CRITICAL();

        OSIntNesting++; //中斷嵌套計數

        OS_EXIT_CRITICAL();

        OSTimeTick();//ucos的時鐘服務程序

        OSIntExit();//這里可以觸發任務切換軟中斷

        }

        二、GPIO的配置

        1、PA口

        PA0對應按鍵PB3,開發板右下角。PA1用于模擬電位器,JP1在這里。PA2用定時器的PWM產生液晶的背光電源。PA4-PA7用于SPI模式操作SD卡。PA9,PA10用于串口0通信。PA11,PA12是USB差分線。PA13、PA14、PA15是JTAG的三個腳。

        PA3、PA8沒用到。

        2、PB口

        PB0用于揚聲器,PB2與JP4用于Boot1選擇。PB3和PB4是JTAG的另外兩個腳。PB5控制綠色指示燈,在SD卡上面。PB6、PB7用于I2C的存儲器。PB8、PB9用于CAN收發器。PB11-PB15用于搖桿按鍵。

        PB1和PB10沒有用到

        3、PC口

        PC0到PC7用于液晶的數據口,PB8-PB12分別用于讀、寫、命令數據選擇、復位和片選。PB13是PB2按鍵,在PB3左邊。PB14-PB15外接32.768KHz晶振。

        以上是開發板上各個IO口的用途,通用IO口先在這里配置,其它復用功能的在相應的功能里配置,以下是源程序。

        4、程序

        void GPIO_Config(void){

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最大速度50MHz

        GPIO_Init(GPIOA, &GPIO_InitStructure);//對A口初始化

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_Init(GPIOB, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_13| GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_Init(GPIOB, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_Init(GPIOC, &GPIO_InitStructure);

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 固始县| 潼关县| 容城县| 旬阳县| 天津市| 镇安县| 内乡县| 广元市| 建湖县| 本溪| 珲春市| 衡南县| 响水县| 化州市| 凤山市| 叶城县| 图木舒克市| 泰宁县| 南丰县| 长汀县| 陵川县| 萨嘎县| 伊川县| 黑山县| 西城区| 株洲市| 林甸县| 九龙城区| 吉木萨尔县| 三门县| 蒲城县| 烟台市| 措美县| 东光县| 龙里县| 泸西县| 高雄市| 台湾省| 定兴县| 辽中县| 寿宁县|