stm32f767 stm32l010 oled hal
Dependencies: SMALL_HAL_SSD1308_128x64_I2C mbed
main.cpp@1:25837ff4fbee, 2022-08-05 (annotated)
- Committer:
- caa45040
- Date:
- Fri Aug 05 06:04:51 2022 +0000
- Revision:
- 1:25837ff4fbee
- Parent:
- 0:586ac17962ab
stm32f767 stm32l010 oled hal
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
caa45040 | 0:586ac17962ab | 1 | |
caa45040 | 0:586ac17962ab | 2 | //i2c_HT16K33_test1_767_1 |
caa45040 | 0:586ac17962ab | 3 | |
caa45040 | 0:586ac17962ab | 4 | #include "mbed.h" |
caa45040 | 0:586ac17962ab | 5 | |
caa45040 | 0:586ac17962ab | 6 | #include "main.h" |
caa45040 | 0:586ac17962ab | 7 | |
caa45040 | 0:586ac17962ab | 8 | #include "SSD1308.h" |
caa45040 | 0:586ac17962ab | 9 | |
caa45040 | 0:586ac17962ab | 10 | |
caa45040 | 0:586ac17962ab | 11 | #define ADDR (0x70<<1) // address |
caa45040 | 0:586ac17962ab | 12 | |
caa45040 | 0:586ac17962ab | 13 | DigitalOut myled(PB_0); |
caa45040 | 0:586ac17962ab | 14 | |
caa45040 | 0:586ac17962ab | 15 | I2C_HandleTypeDef hi2c1; |
caa45040 | 0:586ac17962ab | 16 | |
caa45040 | 0:586ac17962ab | 17 | void SystemClock_Config(void) |
caa45040 | 0:586ac17962ab | 18 | { |
caa45040 | 0:586ac17962ab | 19 | RCC_OscInitTypeDef RCC_OscInitStruct = {0}; |
caa45040 | 0:586ac17962ab | 20 | RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |
caa45040 | 0:586ac17962ab | 21 | RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; |
caa45040 | 0:586ac17962ab | 22 | |
caa45040 | 0:586ac17962ab | 23 | __HAL_RCC_PWR_CLK_ENABLE(); |
caa45040 | 0:586ac17962ab | 24 | __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); |
caa45040 | 0:586ac17962ab | 25 | |
caa45040 | 0:586ac17962ab | 26 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; |
caa45040 | 0:586ac17962ab | 27 | RCC_OscInitStruct.HSIState = RCC_HSI_ON; |
caa45040 | 0:586ac17962ab | 28 | RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; |
caa45040 | 0:586ac17962ab | 29 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; |
caa45040 | 0:586ac17962ab | 30 | HAL_RCC_OscConfig(&RCC_OscInitStruct); |
caa45040 | 0:586ac17962ab | 31 | |
caa45040 | 0:586ac17962ab | 32 | RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |
caa45040 | 0:586ac17962ab | 33 | |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; |
caa45040 | 0:586ac17962ab | 34 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; |
caa45040 | 0:586ac17962ab | 35 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
caa45040 | 0:586ac17962ab | 36 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; |
caa45040 | 0:586ac17962ab | 37 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
caa45040 | 0:586ac17962ab | 38 | HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0); |
caa45040 | 0:586ac17962ab | 39 | |
caa45040 | 0:586ac17962ab | 40 | PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C1; |
caa45040 | 0:586ac17962ab | 41 | PeriphClkInitStruct.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; |
caa45040 | 0:586ac17962ab | 42 | HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct); |
caa45040 | 0:586ac17962ab | 43 | } |
caa45040 | 0:586ac17962ab | 44 | |
caa45040 | 0:586ac17962ab | 45 | static void MX_I2C1_Init(void) |
caa45040 | 0:586ac17962ab | 46 | { |
caa45040 | 0:586ac17962ab | 47 | hi2c1.Instance = I2C1; |
caa45040 | 0:586ac17962ab | 48 | hi2c1.Init.Timing = 0x00303D5B; |
caa45040 | 0:586ac17962ab | 49 | hi2c1.Init.OwnAddress1 = 0; |
caa45040 | 0:586ac17962ab | 50 | hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; |
caa45040 | 0:586ac17962ab | 51 | hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; |
caa45040 | 0:586ac17962ab | 52 | hi2c1.Init.OwnAddress2 = 0; |
caa45040 | 0:586ac17962ab | 53 | hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; |
caa45040 | 0:586ac17962ab | 54 | hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; |
caa45040 | 0:586ac17962ab | 55 | hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; |
caa45040 | 0:586ac17962ab | 56 | HAL_I2C_Init(&hi2c1); |
caa45040 | 0:586ac17962ab | 57 | |
caa45040 | 0:586ac17962ab | 58 | HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE); |
caa45040 | 0:586ac17962ab | 59 | HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0); |
caa45040 | 0:586ac17962ab | 60 | } |
caa45040 | 0:586ac17962ab | 61 | |
caa45040 | 0:586ac17962ab | 62 | static void MX_GPIO_Init(void) |
caa45040 | 0:586ac17962ab | 63 | { |
caa45040 | 0:586ac17962ab | 64 | __HAL_RCC_GPIOB_CLK_ENABLE(); |
caa45040 | 0:586ac17962ab | 65 | } |
caa45040 | 0:586ac17962ab | 66 | |
caa45040 | 0:586ac17962ab | 67 | void HAL_MspInit(void) |
caa45040 | 0:586ac17962ab | 68 | { |
caa45040 | 0:586ac17962ab | 69 | __HAL_RCC_PWR_CLK_ENABLE(); |
caa45040 | 0:586ac17962ab | 70 | __HAL_RCC_SYSCFG_CLK_ENABLE(); |
caa45040 | 0:586ac17962ab | 71 | } |
caa45040 | 0:586ac17962ab | 72 | |
caa45040 | 0:586ac17962ab | 73 | void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) |
caa45040 | 0:586ac17962ab | 74 | { |
caa45040 | 0:586ac17962ab | 75 | GPIO_InitTypeDef GPIO_InitStruct = {0}; |
caa45040 | 0:586ac17962ab | 76 | if(hi2c->Instance==I2C1) { |
caa45040 | 0:586ac17962ab | 77 | __HAL_RCC_GPIOB_CLK_ENABLE(); |
caa45040 | 0:586ac17962ab | 78 | /**I2C1 GPIO Configuration |
caa45040 | 0:586ac17962ab | 79 | PB8 ------> I2C1_SCL |
caa45040 | 0:586ac17962ab | 80 | PB9 ------> I2C1_SDA |
caa45040 | 0:586ac17962ab | 81 | */ |
caa45040 | 0:586ac17962ab | 82 | GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9; |
caa45040 | 0:586ac17962ab | 83 | GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; |
caa45040 | 0:586ac17962ab | 84 | GPIO_InitStruct.Pull = GPIO_PULLUP; |
caa45040 | 0:586ac17962ab | 85 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; |
caa45040 | 0:586ac17962ab | 86 | GPIO_InitStruct.Alternate = GPIO_AF4_I2C1; |
caa45040 | 0:586ac17962ab | 87 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
caa45040 | 0:586ac17962ab | 88 | |
caa45040 | 0:586ac17962ab | 89 | __HAL_RCC_I2C1_CLK_ENABLE(); |
caa45040 | 0:586ac17962ab | 90 | } |
caa45040 | 0:586ac17962ab | 91 | } |
caa45040 | 0:586ac17962ab | 92 | |
caa45040 | 0:586ac17962ab | 93 | |
caa45040 | 0:586ac17962ab | 94 | |
caa45040 | 0:586ac17962ab | 95 | int main() |
caa45040 | 0:586ac17962ab | 96 | { |
caa45040 | 0:586ac17962ab | 97 | |
caa45040 | 0:586ac17962ab | 98 | HAL_Init(); |
caa45040 | 0:586ac17962ab | 99 | |
caa45040 | 0:586ac17962ab | 100 | SystemClock_Config(); |
caa45040 | 0:586ac17962ab | 101 | MX_GPIO_Init(); |
caa45040 | 0:586ac17962ab | 102 | MX_I2C1_Init(); |
caa45040 | 0:586ac17962ab | 103 | |
caa45040 | 0:586ac17962ab | 104 | HAL_MspInit(); |
caa45040 | 0:586ac17962ab | 105 | |
caa45040 | 0:586ac17962ab | 106 | HAL_I2C_MspInit(&hi2c1); |
caa45040 | 0:586ac17962ab | 107 | |
caa45040 | 0:586ac17962ab | 108 | |
caa45040 | 0:586ac17962ab | 109 | SSD1308 oled = SSD1308( &hi2c1 , SSD1308_SA0); |
caa45040 | 0:586ac17962ab | 110 | //SSD1308 oled = SSD1308( &hi2c1 , ADDR); |
caa45040 | 0:586ac17962ab | 111 | |
caa45040 | 0:586ac17962ab | 112 | |
caa45040 | 0:586ac17962ab | 113 | |
caa45040 | 0:586ac17962ab | 114 | //char n1_8[] = "12345678"; |
caa45040 | 0:586ac17962ab | 115 | char n1_8[] = "87654321"; |
caa45040 | 0:586ac17962ab | 116 | //char n1_8[] = "88888888"; |
caa45040 | 0:586ac17962ab | 117 | |
caa45040 | 0:586ac17962ab | 118 | int ii=0; |
caa45040 | 0:586ac17962ab | 119 | for(int nn=0; nn<8; nn++) { |
caa45040 | 0:586ac17962ab | 120 | // y x |
caa45040 | 0:586ac17962ab | 121 | oled.writeBigChar(0, ii*16,n1_8[nn]); |
caa45040 | 0:586ac17962ab | 122 | ii = ii + 1; |
caa45040 | 0:586ac17962ab | 123 | } //for |
caa45040 | 0:586ac17962ab | 124 | //pc.printf("Printed something\r\n"); |
caa45040 | 0:586ac17962ab | 125 | // printf("Printed something\r\n"); |
caa45040 | 0:586ac17962ab | 126 | |
caa45040 | 0:586ac17962ab | 127 | //oled.writeString(0, 0, "Hello World !"); |
caa45040 | 0:586ac17962ab | 128 | |
caa45040 | 0:586ac17962ab | 129 | |
caa45040 | 0:586ac17962ab | 130 | |
caa45040 | 0:586ac17962ab | 131 | |
caa45040 | 0:586ac17962ab | 132 | }//main |