新發基金的好處和壞處是什么?新基金的封閉期一般是多久?
新發基金的好處和壞處是什么?新發基金的優點:1、認購費率低:一般
2023/07/06
(資料圖片)
看下面這段示例代碼。
void main(){ sys_init() while(1) { //用PA1控制LED亮滅 GPIO_SetBits(GPIOA, GPIO_Pin_1); delay_ms(1000); GPIO_ResetBits(GPIOA, GPIO_Pin_1); delay_ms(1000); }}
在功能實現上這段代碼沒有問題。但如果硬件做變動呢?例如更換為其它品牌的mcu或者IO口更改呢?while(1)里面的代碼是不是都要發生變動呢?不同的mcu底層庫是有區別的。換一個MCU要通篇改動代碼非常惡心!工作量也巨大!非常有必要做分層!無論是裸機還是RTOS都要分層。
1,提高對硬件的兼容性。上面已經介紹過了。MCU的軟件開發與硬件強相關。在硬件設計時經常會有一供、二供、三供等方案。每換一次硬件就要大改一次代碼開發效率低下。
2,增加代碼通用性。例如項目A的一部分功能在項目B上曾經實現過,直接從項目B移植過來就行無須改動或者較少改動。
可以按照下圖來分層
這一層由MCU庫層,由MCU廠家提供。
這一層是對mcu庫層的一個封裝。當更換MCU時只需對這一層做修改,不會影響到其它層。如果完全將MCU的庫封裝一遍工作量將十分巨大,也沒必要,需要哪個就封裝哪個。例如用到uart了那就只把uart的封裝一下,像IIC、SPI等無關的可以不用封裝。
這一層通過調用MCU_HAL層來實現對外設的驅動。例如,IIC控制電源芯片。驅動通過調用MCU_HAL層實現對電源芯片的操作。在這一層用來實現簡單的寄存器讀取。
這一層是對外設的基本功能進行一個封裝。拿電源芯片舉例。當更換電源芯片時,基本功能不會發生變化,比如控制電壓電流等。把這些基礎功能封裝在此。示例代碼如下
void set_cur(uint16_t data)//APP層調用這個API API命名不體現任何芯片信息 { xxx_set_cur();//對芯片進行操作 ...........}
這一層主要寫應用功能。通過調用外設功能HAL層實現。當更換MCU或者某一個芯片時APP層無須改動。
標簽: