STM32/STM8技术论坛
直播中

eyeahe

13年用户 53经验值
擅长:嵌入式技术 接口/总线/驱动 控制/MCU
私信 关注
[经验]

【NUCLEO-F412ZG试用体验】ADC的使用(2)

`发完上个帖子后,想着把串口部分也加上。搞完之后发现液晶不是很稳定,搞来搞去问题依然存在,感觉是线材接触不良,所以决定改用杜邦线连接,改造完之后,液晶显示就稳定了。 IMG_20170111_115134.jpg

结合着之前串口的使用,在上次的基础上,增加通过按下板卡上蓝色按键,把采集到的电压值通过串口发送到终端的功能。

主程序
  1. #include "bsp.h"                        /* 底层硬件驱动 */

  2. uint8_t KeyCode;                /* 按键代码 */
  3. uint16_t AD_Val;
  4. float temp1, temp2, temp3;
  5. uint8_t Txbuffer1[74] = "Welcome to Use Voltage Meter!
  6. Press User Butten To Get Voltage Value :)
  7. ";
  8. uint8_t Txbuffer2[30] = "The Current Voltage is 0.00V
  9. ";
  10. uint8_t Txbuffer3[30] = "****************************
  11. ";

  12. int main(void)
  13. {
  14.         bsp_Init();                /* 硬件初始化 */
  15.         LCD_Write_String(0, 0, "Voltage Meter");
  16.         LCD_Write_String(0, 1, "Voltage is 0.00V");
  17.         USART_DMA_TxConfig((uint32_t *)Txbuffer1, 74);
  18.         GPIO_ToggleBits(GPIOB, GPIO_Pin_7);
  19.         while(1)
  20.         {
  21.                 if(Buf_Ok)
  22.                 {
  23.                         AD_Val = ADC1_DMA_Buf1[ 0] + ADC1_DMA_Buf1[ 1] + ADC1_DMA_Buf1[ 2] + ADC1_DMA_Buf1[3] + ADC1_DMA_Buf1[ 4] + ADC1_DMA_Buf1[ 5] + ADC1_DMA_Buf1[ 6] + ADC1_DMA_Buf1[7];
  24.                         Buf_Ok = 0;
  25.                         temp1 = (AD_Val >> 3) * (3.3 / 4095);
  26.                         Txbuffer2[23] = (uint8_t)temp1 + 0x30;
  27.                         LCD_Write_Char(11, 1, Txbuffer2[23]);
  28.                         Delay(40);
  29.                         temp2 = (temp1 - ((int)temp1)) * 10;
  30.                         Txbuffer2[25] = (uint8_t)temp2 + 0x30;                       
  31.                         LCD_Write_Char(13, 1, Txbuffer2[25]);
  32.                         Delay(40);                       
  33.                         temp3 = (temp2 - (int)temp2) * 10;
  34.                         Txbuffer2[26] = (uint8_t)temp3 + 0x30;
  35.                         LCD_Write_Char(14, 1, Txbuffer2[26]);
  36.                         Delay(40);
  37.                 }
  38.                
  39.                 KeyCode = bsp_GetKey();
  40.                 if (KeyCode != KEY_NONE)
  41.                 {
  42.                         switch (KeyCode)
  43.                         {
  44.                                 case UserButton_Down:
  45.                                         USART_DMA_TxConfig((uint32_t *)Txbuffer3, 30);
  46.                                        
  47.                                         GPIO_ToggleBits(GPIOB, GPIO_Pin_7);
  48.                                         break;
  49.                                 case UserButton_Up:
  50.                                         USART_DMA_TxConfig((uint32_t *)Txbuffer2, 30);       
  51.                                         break;
  52.                                 default:
  53.                                         /* 其它的键值不处理 */
  54.                                         break;
  55.                         }
  56.                 }                               
  57.         }
  58. }


` GIF.gif

更多回帖

发帖
×
20
完善资料,
赚取积分