Basic can bus example with LCD hint
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed
Diff: readme.txt
- Revision:
- 0:6d192735c003
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/readme.txt Sun Dec 31 21:49:17 2017 +0000 @@ -0,0 +1,157 @@ + +BSP_DISCO_F429ZI (library) + +#include "stm32f429i_discovery.h" +#include "stm32f429i_discovery_lcd.h" + + +/** + * @brief System Clock Configuration + * The system Clock is configured as follow : + * System Clock source = PLL (HSE) + * SYSCLK(Hz) = 180000000 + * HCLK(Hz) = 180000000 + * AHB Prescaler = 1 + * APB1 Prescaler = 4 + * APB2 Prescaler = 2 + * HSE Frequency(Hz) = 8000000 + * PLL_M = 8 + * PLL_N = 360 + * PLL_P = 2 + * PLL_Q = 7 + * VDD(V) = 3.3 + * Main regulator output voltage = Scale1 mode + * Flash Latency(WS) = 5 + * @param None + * @retval None + */ + +static void Error_Handler(void) +{ + while(1) {} +} + +static void SystemClock_Config(void) +{ + RCC_ClkInitTypeDef RCC_ClkInitStruct; + RCC_OscInitTypeDef RCC_OscInitStruct; + + /* Enable Power Control clock */ + __PWR_CLK_ENABLE(); + + /* The voltage scaling allows optimizing the power consumption when the device is + clocked below the maximum system frequency, to update the voltage scaling value + regarding system frequency refer to product datasheet. */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /* Enable HSE Oscillator and activate PLL with HSE as source */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 8; + RCC_OscInitStruct.PLL.PLLN = 360; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 7; + if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + /* Initialization Error */ + Error_Handler(); + } + + if(HAL_PWREx_ActivateOverDrive() != HAL_OK) + { + /* Initialization Error */ + Error_Handler(); + } + + /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 + clocks dividers */ + RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) + { + /* Initialization Error */ + Error_Handler(); + } +} + + +void Delaimes(int Count) { + short int i; + for(;Count>0;Count--) + {for(i=0;i<0x4fff;i++); + } +} + +*/ + + + + + HAL_Init(); + + SystemClock_Config(); // SYSclk=180MHz + + BSP_LCD_Init(); + BSP_LCD_LayerDefaultInit(LCD_FOREGROUND_LAYER, (LCD_FRAME_BUFFER + BUFFER_OFFSET)); + BSP_LCD_SetTransparency(LCD_BACKGROUND_LAYER, 0); + BSP_LCD_SelectLayer(LCD_FOREGROUND_LAYER); + Delaimes(4); + BSP_LCD_SetBackColor(LCD_COLOR_BLACK); + BSP_LCD_Clear(LCD_COLOR_BLACK ); + BSP_LCD_SetTextColor(LCD_COLOR_BLUE); + Delaimes(4); + BSP_LCD_DisplayOn(); + BSP_LCD_DisplayStringAtLine(0,buf); + Delaimes(4); + +gpiod->alternate=GPIO_AF9_CAN1; + +GPIO_InitTypeDef gpiod; // + HAL_Init(); + + gpiod.Pin = GPIO_PIN_0; gpiod.Mode = GPIO_MODE_AF_PP; + gpiod.Pull = GPIO_PULLUP; gpiod.Speed = GPIO_SPEED_FAST; + gpiod.Alternate = GPIO_AF9_CAN1; + + HAL_GPIO_Init(GPIOD, &gpiod); + + gpiod.Pin = GPIO_PIN_1; gpiod.Mode = GPIO_MODE_AF_PP; + gpiod.Pull = GPIO_PULLUP; gpiod.Speed = GPIO_SPEED_FAST; + gpiod.Alternate = GPIO_AF9_CAN1; + + HAL_GPIO_Init(GPIOD, &gpiod); + + + HAL_Init(); + + + __GPIOD_CLK_ENABLE(); + gpiod.Pin = GPIO_PIN_0; gpiod.Mode = GPIO_MODE_AF_PP; + gpiod.Pull = GPIO_PULLUP; gpiod.Speed = GPIO_SPEED_FAST; + gpiod.Alternate = GPIO_AF9_CAN1; + HAL_GPIO_Init(GPIOD, &gpiod); + gpiod.Pin = GPIO_PIN_1; gpiod.Mode = GPIO_MODE_AF_PP; + gpiod.Pull = GPIO_PULLUP; gpiod.Speed = GPIO_SPEED_FAST; + gpiod.Alternate = GPIO_AF9_CAN1; + HAL_GPIO_Init(GPIOD, &gpiod); + + + canint.Init.Prescaler=1; + canint.Init.Mode=CAN_MODE_LOOPBACK; + canint.Init.SJW=3; + canint.Init.BS1=5; + canint.Init.BS2=10; + canint.Init.TTCM=DISABLE; + canint.Init.ABOM=DISABLE; + canint.Init.AWUM=DISABLE; + canint.Init.NART=DISABLE; + canint.Init.RFLM=DISABLE; + canint.Init.TXFP=DISABLE; + + + HAL_CAN_Init(&canint); \ No newline at end of file