当前位置:首页 > 单片机 > 单片机
[导读]之前做的PCB板回来前,需构建“驱动代码”的“架构”问题,相对简单,按流程图整理出的文件截图共2页,具体如下:第1页:第2页:--------------------------华丽分割线 1-------------------------编程使用的“版本”

之前做的PCB板回来前,需构建“驱动代码”的“架构”问题,相对简单,按流程图整理出的文件截图共2页,具体如下:

第1页:

第2页:

--------------------------华丽分割线 1-------------------------

编程使用的“版本”为“IAR for STM8 1401”,使用还不错,比较顺手,由于已经完成过部分驱动,并将所有头文件封装进"includes.h"中,包含的头文件如下:

#ifndef __INCLUDES_H_FOR_STM8

#define __INCLUDES_H_FOR_STM8

#include"ultra_maps.h"

#include"ultra_edit.h"

#include "stm8s.h"

#include "stm8s_clk.h"

#include "stm8s_gpio.h"

#include "delay.h"

#include "bsp_gpio.h"

#include "bsp_key.h"

#include "bsp_usart.h"

#include "bsp_adc.h"

#include "bsp_adc_multi.h"

#include "bsp_tim1.h"

#include "bsp_tim2.h"

#include "bsp_tim4.h"

#include "bsp_relay.h"

#endif

控制“功率LED”使用代码位于“bsp_relay.h”和“bsp_relay.c”中,代码很多,采用“宏定义”实现有效控制,“宏定义”如下:

#define RELAY01_GPIO_PORT (GPIOC)

#define RELAY01_GPIO_PINS (GPIO_PIN_7)

#define RELAY02_GPIO_PORT (GPIOC)

#define RELAY02_GPIO_PINS (GPIO_PIN_6)

#define RELAY03_GPIO_PORT (GPIOC)

#define RELAY03_GPIO_PINS (GPIO_PIN_5)

#define RELAY04_GPIO_PORT (GPIOC)

#define RELAY04_GPIO_PINS (GPIO_PIN_4)

#define RELAY05_GPIO_PORT (GPIOC)

#define RELAY05_GPIO_PINS (GPIO_PIN_3)

#define RELAY06_GPIO_PORT (GPIOB)

#define RELAY06_GPIO_PINS (GPIO_PIN_4)

#define RELAY07_GPIO_PORT (GPIOB)

#define RELAY07_GPIO_PINS (GPIO_PIN_5)

“bsp_relay.c”中使用的所有函数如下:

void Relay_GPIO_Init(void);

void Relay_Left_ALL_ON(void);

void Relay_Left_ALL_OFF(void);

void Relay_Left_Single_ON(uint8_t numOfPin);

void Relay_Left_Single_OFF(uint8_t numOfPin);

void Relay_Right_ALL_ON(void);

void Relay_Right_ALL_OFF(void);

void Relay_Right_Single_ON(uint8_t numOfPin);

void Relay_Right_Single_OFF(uint8_t numOfPin);

void Relay_Left_Right_USART1_Action(uint8_t numOfPin);

看“函数名”大概就可以知道函数功能,以下是“void Relay_Left_Single_ON(uint8_t numOfPin)”函数代码,其他函数代码均按照此结构编写:

void Relay_Left_Single_ON(uint8_t numOfPin)

{

uint8_t temp = 0;

temp = numOfPin;

switch(temp)

{

case 1:

{

GPIO_WriteHigh(RELAY04_GPIO_PORT, RELAY04_GPIO_PINS);

break;

}

case 2:

{

GPIO_WriteHigh(RELAY05_GPIO_PORT, RELAY05_GPIO_PINS);

break;

}

case 3:

{

GPIO_WriteHigh(RELAY06_GPIO_PORT, RELAY06_GPIO_PINS);

break;

}

default:

{

Relay_Left_ALL_OFF();

break;

}

}

}

函数均不复杂,但“分而治之”的方式还是让人受益良多;在后期“修改/调试代码”时,简直不要太愉快;


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭