美文网首页STM32学习笔记(野火)
[课程-009-4]自己写库—构件库函数雏形—总结及如何调高代码

[课程-009-4]自己写库—构件库函数雏形—总结及如何调高代码

作者: 我的梨花糕 | 来源:发表于2020-07-23 19:23 被阅读0次

一、巧妙使用宏定义

(一)现有问题

上一节中,使用了包含有引脚、模式、速度的结构体变量的配置信息,但是移植性不强,移植后改动的地方较多,上一节代码如下:

    RCC->APB2ENR|= ((1)<<3);    //打开GPIO端口的时钟
    
    /*
        填写配置信息——给结构体中的成员赋值。
    */
    GPIO_InitStructure_G.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure_G.GPIO_Mode = GPIO_Mode_OUT_PP;
    GPIO_InitStructure_G.GPIO_Speed = GPIO_Speed_50MZ;
    /*
        调用GPIO_Init()函数,初始化GPIO端口的性质
    */
    GPIO_Init(GPIOB, &GPIO_InitStructure_G);
    
//  GPIO_SetBits(GPIOB,GPIO_Pin_0);
    GPIO_ResetBits(GPIOB,GPIO_Pin_0);

(二) 改进

使用宏定义,将常用名称进行宏定义映射。

#define LED_GPIO_PIN GPIO_Pin_5处可修改为GPIO_Pin_0

#include "stm32f10x.h"
#include "stm32f10x_GPIO.h"


#define     LED_GPIO_PORT                   GPIOB
#define     LED_GPIO_CLK_ENABLE         (RCC->APB2ENR|= ((1)<<3))
#define     LED_GPIO_PIN                    GPIO_Pin_5  //直接在此处修改


void Delay(uint32_t count) 
{
    for(; count != 0; count--);
}
    
int main(void){
    LED_GPIO_CLK_ENABLE;

    GPIO_InitStructure_G.GPIO_Pin = LED_GPIO_PIN;
    GPIO_InitStructure_G.GPIO_Mode = GPIO_Mode_OUT_PP;
    GPIO_InitStructure_G.GPIO_Speed = GPIO_Speed_50MZ;


    GPIO_Init(LED_GPIO_PORT, &GPIO_InitStructure_G);


    while(1)
    {
        GPIO_ResetBits(LED_GPIO_PORT,LED_GPIO_PIN);
        Delay(0xffff);
        GPIO_SetBits(GPIOB,LED_GPIO_PIN);
        Delay(0xffff);
    }

}

void SystemInit(void)
{
    //
}

沉迷工作

2020年7月23日 梨梨笔记
学习视频来源,点此链接

相关文章

网友评论

    本文标题:[课程-009-4]自己写库—构件库函数雏形—总结及如何调高代码

    本文链接:https://www.haomeiwen.com/subject/njzhlktx.html