BSP方法_例题

本文介绍了如何运用BSP(Business System Planning)方法为一家生产制造型企业构建ERP系统的U/C矩阵,并据此确定系统总体结构。企业主要业务功能包括生产经营、产品设计、生产制造、销售产品、财务管理及人事管理等六个方面,涉及数据包括财务、卖主、库存等。通过U/C矩阵的调整,使得功能和数据类对齐,以确定子系统及其数据流动关系,为企业资源管理系统提供结构化的规划方案。

IS系统规划BSP方法例题:
某生产制造型企业根据现在企业的发展趋势,决定开发出新的企业ERP(企业资源管理系统)。
在开发过程中,成立了开发小组,由厂长、各部门主管以及相应的技术人员组成。小组成立后,通过调研得到以下信息:

一、该企业的组织业务功能主要有:
1、生产经营过程;包括企业计划、组织分析、评价与控制、财务计划、资本寻求等功能。
2、产品设计过程:包括研究、预测、设计开发、产品说明维护等功能。
3、生产制造过程:包括采购、接收、库存控制、工作流图、调度、能力计划、材料需求、运行等功能。
4、销售产品过程:包括领域管理、销售、销售管理、订货服务、运输等功能。
5、财务管理过程:包括会计总账、成本控制、预算会计等功能。
6、人事管理过程:包括人员计划、赔偿等功能。

二、该企业完成相关业务流程涉及到的数据有:财务、卖主、原材料库存、设备、过程工作、计划等数据。

三、通过归纳总结可以获得企业在日常功能管理中使用和产生的数据关系如下表 :
在这里插入图片描述
在这里插入图片描述
题目要求:
请根据上述描述,利用BSP方法建立、刻画U/C矩阵,最终建立该ERP的系统总体结构。说明你所建立的系统总体结构包括几个子系统及相关的数据流动关系。(要求通过调整功能行和数据类列,使U、C集中在一条对角线上)。
(U/C矩阵见“BSP方法U/C矩阵”)
在这里插入图片描述

*/ void BSP_Init(uint32_t Status) { BSP_DC24_LU((Enum_BSP_DC24_Status)((Status & BSP_DC24_LU_ON) == 0 ? BSP_DC24_Status_DISABLED : BSP_DC24_Status_ENABLED)); BSP_DC24_LD((Enum_BSP_DC24_Status)((Status & BSP_DC24_LD_ON) == 0 ? BSP_DC24_Status_DISABLED : BSP_DC24_Status_ENABLED)); BSP_DC24_RU((Enum_BSP_DC24_Status)((Status & BSP_DC24_RU_ON) == 0 ? BSP_DC24_Status_DISABLED : BSP_DC24_Status_ENABLED)); BSP_DC24_RD((Enum_BSP_DC24_Status)((Status & BSP_DC24_RD_ON) == 0 ? BSP_DC24_Status_DISABLED : BSP_DC24_Status_ENABLED)); BSP_LED_R((Enum_BSP_LED_Status)((Status & BSP_LED_R_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_G((Enum_BSP_LED_Status)((Status & BSP_LED_G_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_1((Enum_BSP_LED_Status)((Status & BSP_LED_1_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_2((Enum_BSP_LED_Status)((Status & BSP_LED_2_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_3((Enum_BSP_LED_Status)((Status & BSP_LED_3_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_4((Enum_BSP_LED_Status)((Status & BSP_LED_4_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_5((Enum_BSP_LED_Status)((Status & BSP_LED_5_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_6((Enum_BSP_LED_Status)((Status & BSP_LED_6_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_7((Enum_BSP_LED_Status)((Status & BSP_LED_7_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); BSP_LED_8((Enum_BSP_LED_Status)((Status & BSP_LED_8_ON) == 0 ? BSP_LED_Status_DISABLED : BSP_LED_Status_ENABLED)); } /** * @brief 左上角DC24 * * @param Status 状态 */ void BSP_DC24_LU(Enum_BSP_DC24_Status Status) { HAL_GPIO_WritePin(GPIOH, GPIO_PIN_5, (GPIO_PinState)(Status)); } /** * @brief 左下角DC24 * * @param Status 状态 */ void BSP_DC24_LD(Enum_BSP_DC24_Status Status) { HAL_GPIO_WritePin(GPIOH, GPIO_PIN_4, (GPIO_PinState)(Status)); } /** * @brief 右上角DC24 * * @param Status 状态 */ void BSP_DC24_RU(Enum_BSP_DC24_Status Status) { HAL_GPIO_WritePin(GPIOH, GPIO_PIN_3, (GPIO_PinState)(Status)); } /** * @brief 右下角DC24 * * @param Status 状态 */ void BSP_DC24_RD(Enum_BSP_DC24_Status Status) { HAL_GPIO_WritePin(GPIOH, GPIO_PIN_2, (GPIO_PinState)(Status)); } /** * @brief 红色LED * * @param Status 状态 */ void BSP_LED_R(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11, (GPIO_PinState)(Status)); } /** * @brief 绿色LED * * @param Status 状态 */ void BSP_LED_G(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOF, GPIO_PIN_14, (GPIO_PinState)(Status)); } /** * @brief 1号LED * * @param Status 状态 */ void BSP_LED_1(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_1, (GPIO_PinState)(Status)); } /** * @brief 2号LED * * @param Status 状态 */ void BSP_LED_2(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_2, (GPIO_PinState)(Status)); } /** * @brief 3号LED * * @param Status 状态 */ void BSP_LED_3(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_3, (GPIO_PinState)(Status)); } /** * @brief 4号LED * * @param Status 状态 */ void BSP_LED_4(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_4, (GPIO_PinState)(Status)); } /** * @brief 5号LED * * @param Status 状态 */ void BSP_LED_5(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_5, (GPIO_PinState)(Status)); } /** * @brief 6号LED * * @param Status 状态 */ void BSP_LED_6(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_6, (GPIO_PinState)(Status)); } /** * @brief 7号LED * * @param Status 状态 */ void BSP_LED_7(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, (GPIO_PinState)(Status)); } /** * @brief 8号LED * * @param Status 状态 */ void BSP_LED_8(Enum_BSP_LED_Status Status) { HAL_GPIO_WritePin(GPIOG, GPIO_PIN_8, (GPIO_PinState)(Status)); } Init函数指的什么
最新发布
07-24
在嵌入式系统开发中,`BSP_Init`函数通常用于初始化与硬件平台相关的外设和功能,其具体作用取决于其内部实现。这类函数的核心目标是为操作系统和应用程序提供一个稳定、可操作的硬件环境。以下是一些常见的功能和实现方式: ### 硬件初始化 `BSP_Init`函数通常负责初始化硬件相关的外设,例如GPIO、SPI、I2C、UART等。这些外设的初始化包括配置时钟、设置引脚复用、配置寄存器等操作。例如,在初始化SPI总线时,需要设置时钟频率、数据格式以及引脚的复用功能,以确保硬件平台能够正确识别和使用SPI总线[^2]。 ### 系统配置 除了硬件外设的初始化,`BSP_Init`函数还可能负责系统级别的配置。例如,设置中断控制器(如GIC_Init()函数用于初始化通用中断控制器)、配置中断处理函数表(如system_irqtable_init()函数为每个可能的中断分配默认处理函数)以及设置中断向量基地址寄存器(如__set_VBAR(0x87800000))[^4]。这些配置确保了系统能够正确响应和处理中断。 ### 接口宏定义 在某些情况下,`BSP_Init`函数可能会通过接口宏定义来导出初始化函数。例如,通过定义`#define INIT_BSP_PORT(func) INIT_EXPORT(func, "2");`和`#define INIT_DATA_PORT(func) INIT_EXPORT(func, "3");`,可以将特定的初始化函数导出到不同的初始化阶段,从而实现更灵活的初始化流程[^3]。 ### 示例代码 以下是一个简单的示例代码,展示了如何实现`BSP_Init`函数的基本框架: ```c void BSP_Init(void) { // 初始化GPIO GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化SPI总线 SPI_HandleTypeDef hspi1; __HAL_RCC_SPI1_CLK_ENABLE(); hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi1.Init.CRCPolynomial = 10; HAL_SPI_Init(&hspi1); } ``` 通过上述代码可以看到,`BSP_Init`函数不仅初始化了GPIO,还初始化了SPI总线,确保硬件平台能够正确运行。 ### 相关问题 1. `BSP_Init`函数中如何处理多个外设的初始化? 2. 在嵌入式系统中,如何通过接口宏定义实现初始化函数的导出? 3. `BSP_Init`函数如何影响嵌入式系统的启动过程? 4. 中断控制器的初始化在`BSP_Init`函数中的作用是什么? 5. 如何在`BSP_Init`函数中配置外部存储器?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值