这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 活动中心» 板卡试用» STM32F410RB 板卡驱动 ST7565 实现 跳动的

共3条 1/1 1 跳转至

STM32F410RB 板卡驱动 ST7565 实现 跳动的

菜鸟
2018-11-08 14:43:31 打赏

工程描述:使用STM32F410MCU,通过SPI控制MAPS-DOCK上面LCD屏幕控制显示图片来实现“跳动的心”。
程序细节:
1.创建工程,使用官方HAL库配置SPI2生成简单的程序,配置屏幕CS,CD,nRST引脚。
2.跳线实现STM32F4demo板和MAPS-DOCK上LCD的控制

QQ图片20181108104938.jpgLCD屏 STM32F4
MOSI SPI2_MOSI
SCLK SPI2_SCLK
CD PC8
nRST PC10
CS PC9
3.绘制LCD屏显示图片,生成数组。

QQ图片20181108105839.png4.主程序加载数组交替显示来实现跳动的心。由于麻烦这里贴两张图片不拍视频了。初步实现外表看来是跳动的心,后面可添加声音,心跳采集来更新心跳速率,以及开一个小窗口来屏幕显示心跳值。

5. 遇到的问题 :
LCD屏幕的 RST管脚,在测试过程中 接触不好,出现了 不显示的问题,该管脚 与 MAPS-DOCK板的 仿真芯片 复位脚和 LCD复位脚 服用,后来
接到 STM32F410RB 板子的 RSET 脚,就OK了。

SPI配置
void MX_SPI2_Init(void)
{

hspi2.Instance = SPI2;
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 10;

if (HAL_SPI_Init(&hspi2) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}

}

void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
{

GPIO_InitTypeDef GPIO_InitStruct;
if(spiHandle->Instance==SPI2)
{
/* USER CODE BEGIN SPI2_MspInit 0 */

/* USER CODE END SPI2_MspInit 0 */
/* SPI2 clock enable */
__HAL_RCC_SPI2_CLK_ENABLE();

/**SPI2 GPIO Configuration
PC2 ------> SPI2_MISO
PC3 ------> SPI2_MOSI
PB10 ------> SPI2_SCK
PB12 ------> SPI2_NSS
*/
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* USER CODE BEGIN SPI2_MspInit 1 */

/* USER CODE END SPI2_MspInit 1 */
}
}

int main(void)
{

/* USER CODE BEGIN 1 */
uint16_t ctemp = 1000;
/* 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_DMA_Init();
MX_USART2_UART_Init();
MX_SPI2_Init();
MX_ADC1_Init();
MX_I2C1_Init();
MX_FMPI2C1_Init();
MX_USART1_UART_Init();
MX_TIM5_Init();
MX_TIM9_Init();
MX_RTC_Init();
LCD_Initialize();
LCD_Power_On();
/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
LCD_FillAll((unsigned char *)nBitmapDot);
HAL_Delay(ctemp);
LCD_FillAll((unsigned char *)nBitmapDot1);
HAL_Delay(ctemp);
ctemp -=10;
if(ctemp<200)
ctemp = 1000;
}




关键词: 结题

高工
2018-11-08 15:04:38 打赏
2楼

没见到有心率传感器啊~


菜鸟
2018-11-08 15:37:03 打赏
3楼

视频 上传不成功。效果就是这个LCD 屏幕上的 心形 图标 跳动。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]