zoukankan      html  css  js  c++  java
  • STM32点LED灯

    一、建立项目模板

    这里的user中重复引用了system_stm32f10x.c

    Output中选择Create HEXFile,并且可以选择输出路径。
    Listing中可以选择输出路径。
    然后在C/C++中加入两个宏:

    1. STM32F10X_MD,USE_STDPERIPH_DRIVER 

    并且还要勾选One ELF Section per Function,加入头文件路径:

    在Debug中,使用J-Link,并设置
    在Utilities,选择J-Link并Setting中:

    二、写点LED代码

    GPIO初始化:

        /**8位的LED的IO口***/
        #define PIN_LED (GPIO_Pin_8 | GPIO_Pin_9 |GPIO_Pin_10 |GPIO_Pin_11 |GPIO_Pin_12 |GPIO_Pin_13 |GPIO_Pin_14 |GPIO_Pin_15)
        void LED_INIT(void)
        {
            GPIO_InitTypeDef GPIO_InitStructure;
             GPIO_InitStructure.GPIO_Pin = PIN_LED;
             GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
             GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
            
             /*打开LED使用的GPIO的时钟使能*/
             RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
             /*进行初始化*/
             GPIO_Init(GPIOB, &GPIO_InitStructure);
        }
     

    设置多位GPIO电平:

        /****************************
        * Function Name : LED_SET
        * Description : 设置LED的状态,使用了8位。因为一次使用16位,所以要先读取
        * Input : data
        * Output : None
        * Return : None
        *****************************/
        void LED_SET(uint8_t data)
        {
            uint16_t setValue;
    
            setValue = GPIO_ReadOutputData(GPIOB);
                setValue &= 0x00ff; //使用高8位
             setValue |= (uint16_t)data <<8;
            
             GPIO_Write(GPIOB, setValue);
        }

    简单的main函数

        /****************************************************************************
        * Function Name : main
        * Description : Main program.
        * Input : None
        * Output : None
        * Return : None
        ****************************************************************************/
    
        int main(void)
        {
            LED_INIT();
            LED_SET(0x0f);
    
            while (1)
            {
                LED_SET(0xff);
                Delay(10);
                LED_SET(0x00);
                Delay(10);
            }
        }
    
        /*******************************************************************************
        * Function Name : Delay
        * Description : ???±???ò
        * Input : c
        * Output : None
        * Return : None
        *******************************************************************************/
    
        void Delay(uint16_t c)
        {
            uint16_t a,b;
            for(; c>0; c--)
                for(a=1000; a>0; a--)
                    for(b=1000; b>0; b--);
        }
     

    可以直接设置单独的GIPO输出位:

        GPIO_WriteBit(GPIOB, GPIO_Pin_15, Bit_SET);
        GPIO_WriteBit(GPIOB, GPIO_Pin_15, Bit_RESET);





    无欲速,无见小利。欲速,则不达;见小利,则大事不成。
  • 相关阅读:
    python条件判断之直接加数字
    pythontip题目解答
    twitter api取出的日期格式化
    MySQL Archive存储引擎
    Python Json序列化
    Python 装饰器
    Python 匿名函数
    Python 函数
    Python 字符编码
    Python 文件操作
  • 原文地址:https://www.cnblogs.com/ch122633/p/7363229.html
Copyright © 2011-2022 走看看