• 智林STM32程序源代码的分析和整理03(转帖)


    一、Systick的配置

    1、简单介绍

       这是一个系统定时器,时钟源可以为AHB时钟,也可设置为SysClk/8。使用时先设定初始值,然后每来一个时钟,减去1,计数器为0时标志置位,也可触发中断。

       在我的程序中,Systick用作usos的工作时钟。

    2、我的源程序

    void SysTick_Config(void){

     

     SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); /* AHB始终作为SysTick时钟源 */

        SysTick_SetReload(72000*10); /* 10毫秒发生一次中断,ucos的系统频率为100Hz */

     //72MHz的频率下,计数72000需要1ms

     SysTick_ITConfig(ENABLE);      /* 使能中断 */

    }

    下面是中断服务程序

    void SysTickHandler(void){

        OS_CPU_SR cpu_sr;

        OS_ENTER_CRITICAL();

        OSIntNesting++;   //中断嵌套计数

        OS_EXIT_CRITICAL();

        OSTimeTick();  //ucos的时钟服务程序

        OSIntExit();  //这里可以触发任务切换软中断  

    }

    二、GPIO的配置

    1PA

       PA0对应按键PB3,开发板右下角。 PA1用于模拟电位器,JP1在这里。 PA2用定时器的PWM产生液晶的背光电源。PA4-PA7用于SPI模式操作SD卡。PA9PA10用于串口0通信。PA11PA12USB差分线。PA13PA14PA15JTAG的三个脚。

       PA3PA8没用到。

    2PB

      PB0用于扬声器,PB2JP4用于Boot1选择。PB3PB4JTAG的另外两个脚。PB5控制绿色指示灯,在SD卡上面。PB6PB7用于I2C的存储器。PB8PB9用于CAN收发器。PB11-PB15用于摇杆按键。

       PB1PB10没有用到

    3PC

       PC0PC7用于液晶的数据口,PB8-PB12分别用于读、写、命令数据选择、复位和片选。PB13PB2按键,在PB3左边。PB14-PB15外接32.768KHz晶振。

    以上是开发板上各个IO口的用途,通用IO口先在这里配置,其它复用功能的在相应的功能里配置,以下是源程序。

    4、程序

    void GPIO_Config(void){

     

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  /* PA0接着按钮PB3 */

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

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

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

     /* 配置PB5为输出推挽方式,控制一个小绿灯 */

     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);

     /* 配置PB11-PB15为输入浮空方式,是摇杆五键输入 */

     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; /* PC13脚接着按钮PB2 */

     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

     GPIO_Init(GPIOC, &GPIO_InitStructure);

     

     /*液晶控制的IO口在LCD底层驱动函数中实现直接设置,PC0-PC12*/

    }

  • 相关阅读:
    Elasticsearch集群使用ik分词器
    ES Docs-3:Modifying Data
    ES Docs-2:Exploring ES cluster
    ES Docs-1:Installation Elasticsearch-2.3.1
    Ubuntu的apt-get本地源搭配——根据需要自己添加软件作源
    Linux中Root用户密码变更、密码忘记
    Eclipse安装SVN插件
    【转】Subversion快速入门教程-动画演示
    【转】‘svn’不是内部或外部命令,也不是可运行的程序
    pt-summary pt-mysql-summary工具
  • 原文地址:https://www.cnblogs.com/ddlzq/p/1593278.html
Copyright © 2020-2023  润新知