當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]如下圖所示,評(píng)估板長(zhǎng)這個(gè)樣子: TKM32F499深圳市好鉅潤(rùn)科技有限公司發(fā)行的一款高性能單片機(jī),以上圖片是基于TKM32F499的一款評(píng)估板,可以看到評(píng)估板上的資源那是相當(dāng)?shù)呢S富了,而且還是白菜價(jià),到手價(jià)僅需88元,不得不說(shuō)實(shí)在是香,香在哪呢?咱們看看特點(diǎn)就

如下圖所示,評(píng)估板長(zhǎng)這個(gè)樣子:

TKM32F499深圳市好鉅潤(rùn)科技有限公司發(fā)行的一款高性能單片機(jī),以上圖片是基于TKM32F499的一款評(píng)估板,可以看到評(píng)估板上的資源那是相當(dāng)?shù)呢S富了,而且還是白菜價(jià),到手價(jià)僅需88元,不得不說(shuō)實(shí)在是香,香在哪呢?咱們看看特點(diǎn)就知道了。

1、特點(diǎn)

1、IPS全視角液晶屏,陽(yáng)光下可視度高;

2、高分辨率800*480;

3、超大存儲(chǔ)空間:16MB的FLASH及8MB的RAM,可以運(yùn)行復(fù)雜的界面程序;

4、采用高性能TK499芯片,240MHz,帶FPU,支持硬件浮點(diǎn)運(yùn)算;

5、USB方式下載,可以用USB更新程序,圖標(biāo)及字庫(kù);

6、帶WIFI模塊,支持無(wú)線顯示,利于接入IoT物聯(lián)網(wǎng)

7、提供豐富外設(shè):串口、SPI、GPIO、USB,SDIO、五向按鍵、3路LED燈;

8、性價(jià)比高,88元包含了高性能M4芯片,16M FLASH與8M RAM及高分辨率TFT屏, 可以直接片上編程,比串口屏靈活,速度更快;

這么強(qiáng)大的一個(gè)評(píng)估板,直接套在我們的產(chǎn)品上簡(jiǎn)直就是天然的優(yōu)勢(shì),但不知道開(kāi)發(fā)起來(lái)難度大不大?

根據(jù)官方對(duì)評(píng)估板的介紹,用戶不需要關(guān)心環(huán)境設(shè)置以及路徑設(shè)置,所有的一切,他們都幫我們配置好了,所以我們只需要拿到程序的工程文件,直接就可以開(kāi)始編寫(xiě)代碼,其它一些特殊的說(shuō)明直接查看資料包即可。

2、開(kāi)發(fā)平臺(tái)

那這款芯片用什么平臺(tái)來(lái)進(jìn)行開(kāi)發(fā)呢?

這是我們熟悉的Keil5,編程風(fēng)格和STM32是幾乎是一樣的。

想要讓芯片工作起來(lái),去驅(qū)動(dòng)連接的外設(shè),首先我們得了解芯片的一些規(guī)格,比如系統(tǒng)框圖、引腳排列和引腳說(shuō)明、存儲(chǔ)器映射表,了解了這些以后,我們?cè)偃ソY(jié)合芯片的Datasheet去查詢相應(yīng)的寄存器以及注意事項(xiàng),最后完成我們產(chǎn)品功能的軟件編寫(xiě)。

3、TKM32F499芯片架構(gòu)

以下是TKM32F499芯片系統(tǒng)框圖,系統(tǒng)框圖能讓我們快速了解這款芯片包含哪些模塊單元,以便于我們開(kāi)發(fā)產(chǎn)品時(shí)進(jìn)行選型。

可以看到,芯片基于ARM-ContexM4 FPU架構(gòu),我們來(lái)簡(jiǎn)單了解下:

ARM Cortex-M4處理器是由ARM專門(mén)開(kāi)發(fā)的最新嵌入式處理器,在M3的基礎(chǔ)上強(qiáng)化了運(yùn)算能力,新加了浮點(diǎn)、DSP、并行計(jì)算等。

ARM-ContexM4 FPU處理器則是在此架構(gòu)基礎(chǔ)上單精度浮點(diǎn)單元(FPU),能夠高效率處理較為復(fù)雜的浮點(diǎn)運(yùn)算,如電機(jī)閉環(huán)控制、PID算法、快速傅里葉變換等。

TKM32F499支持的功能還是非常多的,除了常規(guī)的STM32上有的功能,還加了一個(gè)特色模塊,比如TK80.

4、TKM32F499芯片管腳及排列說(shuō)明

5、TKM32F499存儲(chǔ)器映射表

6、TKM32F499測(cè)評(píng)程序編寫(xiě)步驟及程序解讀

玩任何一個(gè)板子,先點(diǎn)個(gè)燈,后面就好辦了,官方資料包里第一個(gè)例程GPIO_LED是讓評(píng)估板上的LED以固定的頻率進(jìn)行閃爍,我們來(lái)看下原理圖:



由于例程里沒(méi)有使用PWM去驅(qū)動(dòng)LED,所以直接高低電平就可以驅(qū)動(dòng)它進(jìn)行工作了。管腳接在PD8這個(gè)位置。

既然和STM32的編程方式一樣,那么肯定是以下的流程:

1、初始化并使能RCC時(shí)鐘

2、GPIO模式配置及初始化

3、使用GPIO

TKM32F499,官方已經(jīng)寫(xiě)好相應(yīng)的開(kāi)發(fā)庫(kù)了,我們拿來(lái)即用即可,編寫(xiě)這個(gè)例程,一共需要用到庫(kù)文件里四個(gè)API,分別是:

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin);

6.1 RCC_AHBPeriphClockCmd

RCC_AHBPeriphClockCmd用于配置系統(tǒng)的RCC時(shí)鐘,只有時(shí)鐘起來(lái)了,外設(shè)才能工作。打HAL_rcc.h可以看到,官方根據(jù)Datasheet已經(jīng)寫(xiě)好了相應(yīng)的地址。

這里我們要控制的外設(shè)是GPIOD,根據(jù)存儲(chǔ)器映射圖,我們可以看到GPIOD掛在AHB1總線下:

對(duì)應(yīng)的,接下來(lái)看Datasheet關(guān)于RCC相關(guān)的章節(jié)關(guān)于這部分的描述:

我們需要把這個(gè)寄存器的第三位給使能了,那么GPIOD功能就可以正常使用了。

所以非常簡(jiǎn)單,我們只需要把這一位和RCC的AHB1外設(shè)時(shí)鐘使能寄存器做一個(gè)或操作即可,來(lái)看看程序里是怎么寫(xiě)的:

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);

追進(jìn)該函數(shù)的RCC_AHBPeriphClockCmd源碼實(shí)現(xiàn):

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_RCC_AHB_PERIPH(RCC_AHBPeriph));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
RCC->AHB1ENR |= RCC_AHBPeriph;
}
else
{
RCC->AHB1ENR &= ~RCC_AHBPeriph;
}
}

這里首先使用斷言函數(shù)assert_param檢查參數(shù)是否有效,主要是檢查是否為非法地址。

接下來(lái)判斷NewState參數(shù),如果是ENABLE ,則與RCC->AHB1ENR置位,否則清除該位,NewState參數(shù)其實(shí)是一個(gè)枚舉。

typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;

那么RCC->AHB1ENR是啥呢?追進(jìn)定義看看:

#define PERIPH_BASE           ((uint32_t)0x40000000) /*!< SRAM base address in the bit-band region */
#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000)
#define RCC_BASE (AHB1PERIPH_BASE + 0x3800)
#define RCC ((RCC_TypeDef *) RCC_BASE)

這是將一個(gè)地址強(qiáng)制轉(zhuǎn)換成一個(gè)結(jié)構(gòu)體,STM32里也是這么做的,我們看看對(duì)應(yīng)的結(jié)構(gòu)體:

typedef struct
{
__IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */
__IO uint32_t PLLCFGR; /*!< RCC clock configuration register, Address offset: 0x04 */
__IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */
__IO uint32_t CIR; /*!< RCC clock interrupt register, Address offset: 0x0C */
__IO uint32_t AHB1RSTR; /*!< RCC AHB peripheral clock register, Address offset: 0x10 */
__IO uint32_t AHB2RSTR; /*!< RCC AHB peripheral clock register, Address offset: 0x14 */
__IO uint32_t APB1RSTR; /*!< RCC AHB peripheral clock register, Address offset: 0x18 */
__IO uint32_t APB2RSTR; /*!< RCC AHB peripheral clock register, Address offset: 0x1C */
__IO uint32_t AHB1ENR; /*!< RCC AHB peripheral clock register, Address offset: 0x20 */
__IO uint32_t AHB2ENR; /*!< RCC AHB peripheral clock register, Address offset: 0x24 */
__IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x28 */
__IO uint32_t APB2ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x2C */
__IO uint32_t BDCR; /*!< RCC Backup domain control register, Address offset: 0x30 */
__IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x34 */
__IO uint32_t PLLLCDCFGR; /*!< RCC clock configuration register 2, Address offset: 0x38 */
__IO uint32_t PLLDCKCFGR; /*!< RCC clock configuration register 3, Address offset: 0x3C */
} RCC_TypeDef;

對(duì)應(yīng)結(jié)構(gòu)體的成員即為RCC的地址,如果想詳細(xì)了解它的配置,可以查看手冊(cè)時(shí)鐘章節(jié)。

RCC_AHBPeriph_GPIOD是一個(gè)宏

對(duì)應(yīng)的值是0x0000008,也就是(1 << 3),所以得出結(jié)論,把這個(gè)宏作為參數(shù)傳遞進(jìn)RCC_AHBPeriphClockCmd這個(gè)函數(shù),在第二個(gè)函數(shù)寫(xiě)上ENABLE即可完成GPIOD使能RCC時(shí)鐘的初始化,真香!所以很容易可以寫(xiě)出以下代碼完成GPIOD使能時(shí)鐘的配置:

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);

6.2 GPIO_Init

/**
* @brief Initializes the GPIOx peripheral according to the specified
* parameters in the GPIO_InitStruct.
* @param GPIOx: where x can be (A..G) to select the GPIO peripheral.
* @param GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that
* contains the configuration information for the specified GPIO
* peripheral.
* @retval : None
*/
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

這個(gè)函數(shù)用戶GPIO(通用功能I/O)功能的初始化,與RCC一樣,程序里也是定義了操作GPIO相關(guān)的結(jié)構(gòu)體GPIO_TypeDef,以下是對(duì)應(yīng)的一些寄存器:

typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
uint32_t RESERVED;
__IO uint32_t AFRL;
__IO uint32_t AFRH;
__IO uint32_t CRH_EXT;
__IO uint32_t BSRR_EXT;
__IO uint32_t AFRH_EXT;
} GPIO_TypeDef;

詳細(xì)可以看GPIO章節(jié)手冊(cè)里對(duì)寄存器的描述:

對(duì)IO的管腳、速率、模式的設(shè)置,用的是GPIO_InitTypeDef這個(gè)結(jié)構(gòu)體:

typedef struct
{
uint32_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;

GPIO_Pin用于設(shè)置管腳,對(duì)應(yīng)的也是相應(yīng)的宏:

#define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
#define GPIO_Pin_1 ((uint16_t)0x0002) /* Pin 1 selected */
#define GPIO_Pin_2 ((uint16_t)0x0004) /* Pin 2 selected */
#define GPIO_Pin_3 ((uint16_t)0x0008) /* Pin 3 selected */
#define GPIO_Pin_4 ((uint16_t)0x0010) /* Pin 4 selected */
#define GPIO_Pin_5 ((uint16_t)0x0020) /* Pin 5 selected */
#define GPIO_Pin_6 ((uint16_t)0x0040) /* Pin 6 selected */
#define GPIO_Pin_7 ((uint16_t)0x0080) /* Pin 7 selected */
#define GPIO_Pin_8 ((uint16_t)0x0100) /* Pin 8 selected */
#define GPIO_Pin_9 ((uint16_t)0x0200) /* Pin 9 selected */
#define GPIO_Pin_10 ((uint16_t)0x0400) /* Pin 10 selected */
#define GPIO_Pin_11 ((uint16_t)0x0800) /* Pin 11 selected */
#define GPIO_Pin_12 ((uint16_t)0x1000) /* Pin 12 selected */
#define GPIO_Pin_13 ((uint16_t)0x2000) /* Pin 13 selected */
#define GPIO_Pin_14 ((uint16_t)0x4000) /* Pin 14 selected */
#define GPIO_Pin_15 ((uint16_t)0x8000) /* Pin 15 selected */

#define GPIO_Pin_16 ((uint32_t)0x010000) /* Pin 16 selected */
#define GPIO_Pin_17 ((uint32_t)0x020000) /* Pin 17 selected */
#define GPIO_Pin_18 ((uint32_t)0x040000) /* Pin 18 selected */
#define GPIO_Pin_19 ((uint32_t)0x080000) /* Pin 19 selected */
#define GPIO_Pin_20 ((uint32_t)0x100000) /* Pin 20 selected */
#define GPIO_Pin_21 ((uint32_t)0x200000) /* Pin 21 selected */
#define GPIO_Pin_22 ((uint32_t)0x400000) /* Pin 22 selected */
#define GPIO_Pin_23 ((uint32_t)0x800000) /* Pin 23 selected */
#define GPIO_Pin_All ((uint32_t)0xFFFFFF) /* All pins selected */

GPIO_Speed是用于IO速率的配置,對(duì)應(yīng)的是一個(gè)枚舉:

typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;

GPIO_Mode是針對(duì)IO的模式進(jìn)行配置,對(duì)應(yīng)的是一個(gè)枚舉

typedef enum
{
GPIO_Mode_AIN = 0x0, //模擬輸入
GPIO_Mode_IN_FLOATING = 0x04, //浮空輸入
GPIO_Mode_IPD = 0x28, //下拉輸入
GPIO_Mode_IPU = 0x48, //上拉輸入
GPIO_Mode_Out_OD = 0x14,//通用開(kāi)漏輸出
GPIO_Mode_Out_PP = 0x10,//通用推挽輸出
GPIO_Mode_AF_OD = 0x1C, // 復(fù)用開(kāi)漏輸出
GPIO_Mode_AF_PP = 0x18 //復(fù)用推挽輸出
}GPIOMode_TypeDef;

在了解了以下知識(shí)點(diǎn)以后,針對(duì)LED管腳的配置,我們很快就能寫(xiě)出代碼:

//1、定義GPIO初始化結(jié)構(gòu)體變量
GPIO_InitTypeDef GPIO_InitStructure;
//2、初始化配置管腳
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
//3、初始化管腳速率
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//4、初始化管腳模式,配置為推挽輸出模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//5、調(diào)用GPIO_Init完成IO的初始化
GPIO_Init(GPIOD, &GPIO_InitStructure);

6.3 GPIO_SetBits、GPIO_ResetBits

GPIO_SetBits和GPIO_ResetBits主要是對(duì)端口進(jìn)行設(shè)置和清除,對(duì)應(yīng)的是下面這個(gè)寄存器:


以下是兩個(gè)函數(shù)的源代碼:

/**
* @brief Sets the selected data port bits.
* @param GPIOx: where x can be (A..G) to select the GPIO peripheral.
* @param GPIO_Pin: specifies the port bits to be written.
* This parameter can be any combination of GPIO_Pin_x where
* x can be (0..15).
* @retval : None
*/
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
if(GPIO_Pin>GPIO_Pin_15)GPIOE->BSRR_EXT=GPIO_Pin>>16;
else
GPIOx->BSRR = GPIO_Pin;

}

/**
* @brief Clears the selected data port bits.
* @param GPIOx: where x can be (A..G) to select the GPIO peripheral.
* @param GPIO_Pin: specifies the port bits to be written.
* This parameter can be any combination of GPIO_Pin_x where
* x can be (0..15).
* @retval : None
*/
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->BRR = GPIO_Pin;
}

根據(jù)功能描述,很容易可以寫(xiě)出下列代碼:

//給GPIOD的第八位
GPIO_SetBits(GPIOD, GPIO_Pin_8); //PC8輸出高電平,點(diǎn)亮LED
//清除GPIOD的第八位
GPIO_ResetBits(GPIOD, GPIO_Pin_8);//PD8輸出低電平,熄滅LED

以下是該Demo的源代碼:

/****************************************Copyright (c)****************************************************
**
**
**
**--------------File Info---------------------------------------------------------------------------------
** File name: main.c
** modified Date: 2017-6-20
** Last Version: V0.1
** Descriptions: main 函數(shù)調(diào)用
**
** 好鉅潤(rùn)科技,芯片事業(yè)部----深圳龍華應(yīng)用分部
*********************************************************************************************************/
#include "HAL_conf.h"



/********************************************************************************************************
**函數(shù)信息 :int main (void)
**功能描述 :
**輸入?yún)?shù) :
**輸出參數(shù) :
********************************************************************************************************/

int main(void)
{
uint32_t i;
GPIO_InitTypeDef GPIO_InitStructure;//定義GPIO初始化結(jié)構(gòu)體變量


RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);

//配置連接LED的GPIO為推挽輸出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);


while(1)//無(wú)限循環(huán)
{
GPIO_SetBits(GPIOD, GPIO_Pin_8); //PC8輸出高電平,點(diǎn)亮LED
for(i=0;i<2000000;i++);//延時(shí)

GPIO_ResetBits(GPIOD, GPIO_Pin_8);//PD8輸出低電平,熄滅LED
for(i=0;i<2000000;i++);//延時(shí)
}

}

7、TKM32F499程序編譯與下載

7.1 程序編譯



和STM32一樣,程序編譯直接點(diǎn)擊Keil軟件上的編譯即可,如果程序沒(méi)有錯(cuò)誤則會(huì)生成對(duì)應(yīng)的bin文件。

7.2 程序燒錄

TK499 支持 U 盤(pán)方式下載,無(wú)需借助下載器,一根 USB 線就能下載。

方法一:五向按鍵向上推,同時(shí)按一下復(fù)位(注意,松手時(shí),先松復(fù)位,再松五向按鍵),然后點(diǎn)一下 KEIL 的下載程序的按鈕就可以下載了。KEIL 不會(huì)提示是否下載完成,聽(tīng)到退出 U 盤(pán)的“叮咚”聲就可以了。下載完成一般可以自動(dòng)運(yùn)行,如果沒(méi)運(yùn)行,可以按一下復(fù)位或者斷電再上電就可以運(yùn)行。

方法二:向上推,同時(shí)按一下復(fù)位就會(huì)進(jìn)入程序下載模式,同樣的也會(huì)彈出一個(gè) U 盤(pán),把 KEIL 工程目錄下生成的 bin 程序拖進(jìn) U 盤(pán)就行,如下圖。

如果是芯片第一次使用,需要先燒錄一個(gè) Bootloader。方法是:把五向按鍵向左推,同時(shí)再按一下復(fù)位就進(jìn)入了 Bootloader 下載模式(注意,松開(kāi)按鍵時(shí),先松復(fù)位,再松五向按鍵)。這時(shí)會(huì)彈出一個(gè) TK499 的 U 盤(pán),把開(kāi)發(fā)包壓縮包里的 TK499_Bootloader.bin拖進(jìn)去就行。(一般情況下開(kāi)發(fā)板已經(jīng)是燒好 Bootloader,此步可省略)

Bootloader 是一個(gè)重要的文件,以后會(huì)不斷升級(jí) Bootloader,用它可以通過(guò) USB下載圖片及字庫(kù)。

注意:2019.10.1 前發(fā)布的程序,一般沒(méi)把 flash_download.exe 下載程序工具放進(jìn)工程文件夾里,所以用不了方法一來(lái)下載。當(dāng)然你要自己添加也是很容易的,把這個(gè)小工具放到工程目錄下,然后復(fù)制下面兩行命令進(jìn)去就行。

flash_download
..//@L.bin TK499_V2

8、運(yùn)行結(jié)果

LED以固定頻率進(jìn)行閃爍:

最后,感謝淘寶客服小姐姐多送了一塊帶觸摸的開(kāi)發(fā)板給我:


TKM32F499評(píng)估板例程及資料下載

鏈接:https://pan.baidu.com/s/1xujEO4vJ7i7UUK7v_fGNgw
提取碼:g1y2

或者后臺(tái)回復(fù)TK499即可獲取。

關(guān)于開(kāi)源項(xiàng)目群建立

本公眾號(hào)嵌入式云IOT技術(shù)圈聯(lián)合友情鏈接mculover666公眾號(hào),發(fā)起了開(kāi)源項(xiàng)目的移植分析及共享,目前已到第三期,未來(lái)還會(huì)持續(xù)搜索有價(jià)值的項(xiàng)目,感興趣可加我們的開(kāi)源項(xiàng)目分享群。

Mculover666公眾號(hào)簡(jiǎn)介

號(hào)主Mculover666是一個(gè)喜歡玩板子的小碼農(nóng),CSDN博客專家、華為云云享專家。憑著與生俱來(lái)的興趣專注于物聯(lián)網(wǎng)領(lǐng)域。在寫(xiě)代碼玩板子的同時(shí),通過(guò)寫(xiě)作這種方式分享自己的個(gè)人理解,文章分享的技術(shù)領(lǐng)域內(nèi)容主要包括C語(yǔ)言、STM32、RTOS、NB-IoT、LoRa等,還會(huì)分享超級(jí)好玩的創(chuàng)客內(nèi)容,大開(kāi)腦洞,發(fā)現(xiàn)不一樣的生活~

Mculover666精選文章匯總

公眾號(hào)粉絲福利時(shí)刻

這里我給大家申請(qǐng)到了福利,本公眾號(hào)讀者購(gòu)買(mǎi)小熊派開(kāi)發(fā)板可享受9折優(yōu)惠,有需要購(gòu)買(mǎi)小熊派的朋友,淘寶搜索即可,跟客戶說(shuō)你是公眾號(hào):嵌入式云IOT技術(shù)圈 的粉絲,立享9折優(yōu)惠!

往期精彩

網(wǎng)紅物聯(lián)網(wǎng)開(kāi)發(fā)板小熊派使用評(píng)測(cè)

開(kāi)源STM32產(chǎn)品:無(wú)線點(diǎn)菜寶使用評(píng)測(cè)

超輕量級(jí)網(wǎng)紅軟件定時(shí)器multi_timer(51+stm32雙平臺(tái)實(shí)戰(zhàn))

若覺(jué)得本次分享的文章對(duì)您有幫助,隨手點(diǎn)[在看]并轉(zhuǎn)發(fā)分享,也是對(duì)我的支持。

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉