国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

STM32F103學習筆記(1)——FreeRTOS下模擬I2C

發(fā)布者:電子設(shè)計藝術(shù)家最新更新時間:2025-02-21 來源: jianshu關(guān)鍵字:STM32F103  FreeRTOS  模擬I2C 手機看文章 掃描二維碼
隨時隨地手機看文章


#endif /* _BOARD_I2C_H_ */


三、API調(diào)用

需包含頭文件 board_i2c.h

IIC_Init

功能I2C驅(qū)動初始化,采用模擬IO的方式實現(xiàn)
函數(shù)定義void IIC_Init(void)
參數(shù)
返回

IIC_Start

功能CPU發(fā)起I2C總線啟動信號
函數(shù)定義void IIC_Start(void)
參數(shù)
返回

IIC_Stop

功能CPU發(fā)起I2C總線停止信號
函數(shù)定義void IIC_Stop(void)
參數(shù)
返回

IIC_SendByte

功能CPU向I2C總線設(shè)備發(fā)送8bit數(shù)據(jù)
函數(shù)定義void IIC_SendByte(uint8_t ucByte)
參數(shù)ucByte:等待發(fā)送的字節(jié)
返回

IIC_ReadByte

功能CPU從I2C總線設(shè)備讀取8bit數(shù)據(jù)
函數(shù)定義uint8_t IIC_ReadByte(void)
參數(shù)
返回讀到的數(shù)據(jù)

IIC_WaitAck

功能CPU產(chǎn)生一個時鐘,并讀取器件的ACK應(yīng)答信號
函數(shù)定義uint8_t IIC_WaitAck(void)
參數(shù)
返回0表示正確應(yīng)答,1表示無器件響應(yīng)

IIC_Ack

功能CPU產(chǎn)生一個ACK信號
函數(shù)定義void IIC_Ack(void)
參數(shù)
返回

IIC_NAck

功能CPU產(chǎn)生1個NACK信號
函數(shù)定義void IIC_NAck(void)
參數(shù)
返回

IIC_CheckDevice

功能檢測I2C總線設(shè)備,CPU向發(fā)送設(shè)備地址,然后讀取設(shè)備應(yīng)答來判斷該設(shè)備是否存在
函數(shù)定義uint8_t IIC_CheckDevice(uint8_t address)
參數(shù)address:設(shè)備的I2C總線地址+讀寫控制bit(0 = w, 1 = r)
返回0 - 表示正確, 1 - 表示未探測到

四、使用例子

1)添加頭文件

#include 'board_i2c.h'

2)添加初始化代碼

int main(void)

{   

    BaseType_t xReturn = pdPASS;                                        // 定義一個創(chuàng)建信息返回值,默認為pdPASS

  

    /*-------------------------- 外設(shè)驅(qū)初始化 ---------------------------*/

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);                     // STM32中斷優(yōu)先級分組為4,即4bit都用來表示搶占優(yōu)先級,范圍為:0~15優(yōu)先級分組只需要分組一次即可,以后如果有其他的任務(wù)需要用到中斷,都統(tǒng)一用這個優(yōu)先級分組,千萬不要再分組,切忌

    Board_LedInit();                                                    // LED燈驅(qū)動初始化

    Board_KeyInit();                                                    // 按鍵驅(qū)動初始化 

    USART_Config();                                                     // 串口驅(qū)動初始化    

  

    printf('-------------- I2C Init--------------rn');

    // 這里寫入設(shè)備的I2C總線地址

    uint8_t i2cDevice = IIC_CheckDevice(TEA5767_ADDR_W);            // 初始化I2C,并檢測是否有設(shè)備

    if(!i2cDevice)

    {

        printf('---- I2C OK ----rn');  

    }   

    else

    {

        printf('---- I2C ERROR ----rn');  

    }  

  

    /*-------------------------- 任務(wù)創(chuàng)建 ---------------------------*/

    xReturn = xTaskCreate((TaskFunction_t)appTaskCreate,                // 任務(wù)入口函數(shù)

                          (const char*   )'appTaskCreate',              // 任務(wù)名字

                          (uint16_t      )512,                          // 任務(wù)棧大小

                          (void*         )NULL,                         // 任務(wù)入口函數(shù)參數(shù)

                          (UBaseType_t   )1,                            // 任務(wù)的優(yōu)先級

                          (TaskHandle_t* )&s_appTaskCreateHandle);      // 任務(wù)控制塊指針

                          

    /*-------------------------- 開啟調(diào)度 ---------------------------*/           

    if(pdPASS == xReturn)

    {

        vTaskStartScheduler();                                      

    }

    else

    {

        return -1;

    }

  

    while(1)

    {

        /* 正常不會執(zhí)行到這里 */

    };   

}



[1] [2]
關(guān)鍵字:STM32F103  FreeRTOS  模擬I2C 引用地址:STM32F103學習筆記(1)——FreeRTOS下模擬I2C

上一篇:STM32F103學習筆記(2)——收音機模塊TEA5767使用
下一篇:OSW-MMOS直驅(qū)方向盤DIY過程記錄2-PWM+DIR模式

推薦閱讀最新更新時間:2025-06-24 15:37

將STemWin移植到在STM32F103RCT6上的FreeRTOS
1、版本信息 STM32固件庫V3.5.0 FreeRTOS V8.2.3 STemWin 5.26 Keil 4 2、移植步驟 將FreeRTOS移植到STM32F103RCT6上,這個前面的博客有提到,課參考; 添加LCD屏的驅(qū)動代碼,在這個實驗中使用的正點原子的MINI板,使用的ILI9341的驅(qū)動芯片,添加好并在裸機下測試可用; 將STemWin 5.26相關(guān)文件添加到工程中,如下圖 將涉及到的頭文件路徑加到工程的頭文件路徑中去 修改GUIConf.c文件中的一處地方,這個地方根據(jù)芯片來改,太大了編譯會不通過,提示內(nèi)存不足。如下圖 在FreeRTOS創(chuàng)建一個任務(wù)來顯示,效果如圖 至此,就
[單片機]
將STemWin移植到在<font color='red'>STM32F103</font>RCT6上的<font color='red'>FreeRTOS</font>上
C51單片機模擬I2C總線驅(qū)動程序設(shè)計(2)
/************************************ I2C_RcvB ******************************** 函數(shù)名:uchar I2C_RcvB() 入口: 出口:uchar 型數(shù)據(jù) 功能描述: 接收從器件傳來的數(shù)據(jù),并判斷總線錯誤(不發(fā)應(yīng)答信號),收完后需要調(diào)用應(yīng)答函數(shù)。 調(diào)用函數(shù): 全局變量: ******************************************************************************* uchar I2C_RcvB() { uchar retc;
[單片機]
STM32+FreeRTOS+CUBEMX_學習筆記(五 )ADC采樣
前言 ADC采樣是一種常見的功能 1、STM系列ADC的參數(shù): 手冊中關(guān)于ADC的介紹 ● 12位分辨率 ● 轉(zhuǎn)換結(jié)束、注入轉(zhuǎn)換結(jié)束和發(fā)生模擬看門狗事件時產(chǎn)生中斷 ● 單次和連續(xù)轉(zhuǎn)換模式 ● 從通道0到通道n的自動掃描模式 ● 自校準 ● 帶內(nèi)嵌數(shù)據(jù)一致性的數(shù)據(jù)對齊 ● 采樣間隔可以按通道分別編程 ● 規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換均有外部觸發(fā)選項 ● 間斷模式 ● 雙重模式(帶2個或以上ADC的器件) ● ADC轉(zhuǎn)換時間: ─ STM32F103xx增強型產(chǎn)品:時鐘為56MHz時為1μs(時鐘為72MHz為1.17μs) ─ STM32F101xx基本型產(chǎn)品:時鐘為28MHz時為1μs(時鐘為36MHz為1.55μs) ─ STM3
[單片機]
STM32+<font color='red'>FreeRTOS</font>+CUBEMX_學習筆記(五 )ADC采樣
在stm32的freeRTOS上進行微秒級延時
因為時間片的原因freeRTOS自身貌似無法進行微秒級的延時,實測通過以下函數(shù)可以進行微秒級的消息 dwt_stm32_delay.h #ifndef DWT_STM32_DELAY_H #define DWT_STM32_DELAY_H #ifdef __cplusplus extern C { #endif #include stm32f4xx_hal.h /** * @brief Initializes DWT_Cycle_Count for DWT_Delay_us function * @return Error DWT counter * 1: DWT counter Error *
[單片機]
STM32F103學習筆記(3)——讀寫內(nèi)部Flash
一、簡介 在STM32芯片內(nèi)部有一個 FLASH 存儲器,它主要用于存儲代碼,我們在電腦上編寫好應(yīng)用程序后,使用下載器把編譯后的代碼文件燒錄到該內(nèi)部 FLASH 中,由于 FLASH 存儲器的內(nèi)容在掉電后不會丟失,芯片重新上電復位后,內(nèi)核可從內(nèi)部 FLASH 中加載代碼并運行。 STM32 的內(nèi)部 FLASH 包含主存儲器、系統(tǒng)存儲器以及選項字節(jié)區(qū)域,它們的地址分布及大小見下表 主存儲器 一般我們說 STM32 內(nèi)部 FLASH 的時候,都是指這個主存儲器區(qū)域,它是存儲用戶應(yīng)用程序的空間,芯片型號說明中的 256K FLASH、512K FLASH 都是指這個區(qū)域的大小。 主存儲器分為 256 頁,每頁大小為 2
[單片機]
gd32f103可以完全替代stm32f103
GD32F103是中國廠商GigaDevice推出的一款低成本、高性能的微控制器產(chǎn)品線。STM32F103是意法半導體(STMicroelectronics)的旗艦產(chǎn)品之一,享有良好的聲譽和廣泛的市場份額。兩個系列都基于ARM Cortex-M3內(nèi)核,因此在功能和性能上有一些相似之處。 一、技術(shù)特點比較: 1.1 處理器核心: GD32F103和STM32F103都采用了ARM Cortex-M3內(nèi)核,因此在核心處理能力和指令集方面并無差異。 1.2 主頻和性能: 兩個系列都提供了多個型號,主頻從72MHz到120MHz不等。但是需要注意的是,盡管在頻率上存在一些差異,但兩個系列的處理器都是32位的,因此在處理數(shù)據(jù)和執(zhí)行指令方面具
[單片機]
STM32F103程序調(diào)用printf打印串口數(shù)據(jù)
程序開發(fā)過程中調(diào)試必不可少,一種簡單直接的調(diào)試方式是使用串口發(fā)送數(shù)據(jù),并使用串口助手進行觀測。以前使用MSP430做項目時也同樣使用printf打印數(shù)據(jù),所以現(xiàn)在想在stm32 上實現(xiàn)。 通常串口發(fā)送單字節(jié)庫函數(shù):USART_SendData(USART1, (uint8_t) ch);對顯示小數(shù)等數(shù)據(jù)比較復雜,如果能夠直接使用C語言 stdio.h中的printf直接輸出就可以省去大部分格式輸出轉(zhuǎn)化時間。下面將介紹如何調(diào)用printf打印串口數(shù)據(jù)。 建立USART.C和USART.H兩個文件,分別編寫串口設(shè)置程序與頭文件 USART.C中需要添加如下代碼: 對printf進行重定向; USART.H中需要添加如下代碼
[單片機]
<font color='red'>STM32F103</font>程序調(diào)用printf打印串口數(shù)據(jù)
基于STM32F103入門3——外部中斷
外部中斷 基本概念 CPU在處理某一事件A時,發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生),那么CPU就會暫停當前的工作(A事件),去執(zhí)行B事件(中斷響應(yīng)和中斷服務(wù)),然后B事件做完之后,再回到原來的事件(A事件)中繼續(xù)工作。(中斷的返回)。 簡單的說就是 比如你在家看電視,突然電話響了(中斷),然后又突然有人敲門(又另一個中斷),這時,你是不是應(yīng)該先不看電視,先去接電話,然后去開門,然后再回來看電視呢? 當然 電話響和有人敲門 你先去干哪個 取決于你覺得哪個更重要,更應(yīng)該先去做。這個屬于中斷嵌套。 框圖 功能說明 外部中斷的配置 代碼編寫步驟 1:打開相應(yīng)的時鐘 1.1:GPIO的時鐘 2.2:功能復用IO的
[單片機]
基于<font color='red'>STM32F103</font>入門3——外部中斷
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved