日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HAL库使用硬件SPI驱动0.96寸OLED stm32F401

發布時間:2024/3/26 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HAL库使用硬件SPI驱动0.96寸OLED stm32F401 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 找一個可以使用SPI接口的OLED驅動程序,一般買OLED會提供,或者自己網上找,這里用的是中景園的例程。
  • 由于我使用的開發板是STM32F401ccu6,所以我先移植到我的開發板上,主要改的
  • 打開MXcube
  • 配置時鐘

    配置DEBUG,我這里使用的是SW,可以選擇自己需要的。

    ?

    只發送主機模式

    8位幀數據結構

    高位在前

    波特率分頻值

    空閑時,時鐘線位高

    第二個時鐘沿捕獲

    軟件使能信號

    再配置其它要用的管腳,我這里使用PB4來做使能引腳

    生成代碼

    更改管腳

    更改初始化

    更改向oled寫入命令,數據函數

    記得將所有的u8,u16,u32,改為uint8_t,uint16_t,uint32_t,或者使用typedef,為了方便后期移植,我就直接改

    添加頭文件,初始化函數

    ?

    隨便寫兩行?

    主程序:

    int main(void)
    {
    ? /* USER CODE BEGIN 1 */
    ?? ?uint8_t t=' ';
    ? /* USER CODE END 1 */

    ? /* MCU Configuration--------------------------------------------------------*/

    ? /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    ? HAL_Init();

    ? /* USER CODE BEGIN Init */

    ? /* USER CODE END Init */

    ? /* Configure the system clock */
    ? SystemClock_Config();

    ? /* USER CODE BEGIN SysInit */

    ? /* USER CODE END SysInit */

    ? /* Initialize all configured peripherals */
    ? MX_GPIO_Init();
    ? MX_SPI1_Init();
    ? /* USER CODE BEGIN 2 */
    ??? ?OLED_Init();?? ??? ??? ??? ?//初始化OLED
    ? /* USER CODE END 2 */

    ? /* Infinite loop */
    ? /* USER CODE BEGIN WHILE */
    ? while (1)
    ? {
    ?? ??? ?OLED_ShowString(8,0,(uint8_t *)" ? OLED SPI",16,1);
    ?? ??? ?OLED_ShowString(8,16,(uint8_t *)"Hardware routine",16,1);
    ?? ? ?OLED_Refresh();

    ? ? /* USER CODE END WHILE */

    ? ? /* USER CODE BEGIN 3 */
    ? }
    ? /* USER CODE END 3 */
    }
    ?

    oled.h中需要改的宏定義

    #ifndef __OLED_H
    #define __OLED_H?

    #include "main.h"
    #include "stdlib.h"?? ?

    //-----------------測試LED端口定義----------------?

    //#define LED_ON HAL_GPIO_WritePin(GPIOC,GPIO_Pin_12,GPIO_PIN_RESET);
    //#define LED_ON HAL_GPIO_WritePin(GPIOC,GPIO_Pin_12,GPIO_PIN_RESET);

    //-----------------OLED端口定義----------------?

    #define OLED_PORT GPIOB

    #define OLED_SCL_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_0,GPIO_PIN_RESET);//SCL
    #define OLED_SCL_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_0,GPIO_PIN_SET);//SCL

    #define OLED_SDA_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_1,GPIO_PIN_RESET);//SDA
    #define OLED_SDA_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_1,GPIO_PIN_SET);//SDA

    #define OLED_RES_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_2,GPIO_PIN_RESET);//RES
    #define OLED_RES_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_2,GPIO_PIN_SET);//RES

    #define OLED_DC_Clr() ?HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_3,GPIO_PIN_RESET);//DC
    #define OLED_DC_Set() ?HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_3,GPIO_PIN_SET);//DC
    ??? ??? ? ? ??
    #define OLED_CS_Clr() ?HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_4,GPIO_PIN_RESET);//CS
    #define OLED_CS_Set() ?HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_4,GPIO_PIN_SET);//CS


    #define OLED_CMD ?0?? ?//寫命令
    #define OLED_DATA 1?? ?//寫數據

    #endif

    鏈接:https://pan.baidu.com/s/1xumTyAfvlEPKI80C2ffyPA?
    提取碼:1234

    附上工程鏈接,麻煩點贊,關注,謝謝!!!

    總結

    以上是生活随笔為你收集整理的HAL库使用硬件SPI驱动0.96寸OLED stm32F401的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。