这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取手持数字示波器】N32G430点亮数码管与串口打印、ADC

共9条 1/1 1 跳转至

【换取手持数字示波器】N32G430点亮数码管与串口打印、ADC

助工
2024-04-17 20:13:05   被打赏 40 分(兑奖)     打赏

国民技术N32G430是一款功能强大的MCU,基于安全SoC技术平台架构,采用32位Arm® Cortex®-M处理器内核。它集成了高性能、高集成度、安全、低功耗、高可靠性等特点,适用于各种智能应用。关于您提到的点亮数码管、串口打印和ADC(模数转换器)功能,以下是一些相关信息:

  1. 点亮数码管:

  • 通常数码管的点亮涉及到GPIO(通用输入输出)的配置和驱动。需要查阅N32G430的GPIO控制文档,了解如何配置GPIO引脚以驱动数码管。

  • 需要特定的库或函数来实现数码管的点亮,查阅国民技术的官方文档或社区论坛,看是否有相关的示例代码

  • 或库可供使用,我这里就用IO口驱动,实现功能。

  1. 串口打印:

  • N32G430的串口(Usart1)可以用于打印输出。通常,这涉及到串口的初始化配置,波特率、数据位、停止位等。

  • 使用标准的串口通信协议,RS-232,通过Usart1将数据发送到外部设备(计算机、调试器等)进行显示或分析。

  • 在国民技术的开发文档中,应该能够找到关于串口初始化和使用的详细指南和示例代码。

  1. ADC(模数转换器):

  • N32G430具有高性能的ADC功能,对于模拟信号的数字化处理非常有用。

  • ADC的配置通常包括选择输入通道、设置采样率、分辨率等参数。

  • 通过查阅N32G430的ADC相关文档,了解如何配置和使用ADC功能。涉及到ADC模块的初始化、启动转换、读取转换结果等步骤。

  • 国民技术的官方文档和示例代码应该能够提供关于ADC使用的详细信息和指导。

首先上原理图,开发板与各个功能的搭接。

ABCDEFG是接的数码管;

ADC_IN16是接的NTC,检测室温


image.png

驱动模块板原理图:image.png

串口电脑检测到的是COM11。

image.png

串口输出结果:

image.png

开发板与数码管的杜邦线连接方式如图:

image.pngADC采集的值:

image.png

代码主要完成以下任务:

  1. 设置中断优先级。

  2. 初始化按键输入。

  3. 初始化定时器。

  4. 初始化ADC。

  5. 初始化LED(数码管)。

  6. 初始化串口。

驱动对应的工作。

// uint16_t ADC_Value = 0; // 定义一个16位无符号整数变量ADC_Value,并初始化为0  
// uint16_t ADC_Valuea = 0; // 定义一个16位无符号整数变量ADC_Valuea,并初始化为0  
  
// extern void BasicTimer6_Init(uint16_t period, uint16_t prescaler); // 声明外部函数,用于初始化基本定时器6  
// extern void EXIT4_Macro_PA4(void); // 声明外部函数,用于宏操作或初始化与PA4引脚相关的功能  
// extern void ADC1_Init(void); // 声明外部函数,用于初始化ADC1  
// extern u16 Get_ADC_Average(u8 ch,u8 times); // 声明外部函数,用于获取指定ADC通道的平均值  
// extern void  Usart1_Printf(char *fmt,...); // 声明外部函数,用于格式化输出到USART1  
// extern void UART1_Init(uint32_t baudRate); // 声明外部函数,用于初始化UART1并设置波特率  
  
int main(void)  
{  
    NVIC_Priority_Group_Set(NVIC_PER2_SUB2_PRIORITYGROUP); // 设置中断优先级分组  
  
    // Key_Input_Initialize(KEY1_PORT, KEY1_PIN); // 初始化按键1的输入  
    SysTick_Delay_Ms(1000); // 延时1000毫秒  
    Key_Input_Initialize(KEY2_PORT, KEY2_PIN); // 初始化按键2的输入  
    Key_Input_Initialize(KEY3_PORT, KEY3_PIN); // 初始化按键3的输入  
    Key_Input_Initialize(KEYWakeup_PORT, KEYWakeup_PIN); // 初始化唤醒按键的输入  
  
    BasicTimer6_Init(500-1,32000-1); // 初始化基本定时器6,设置周期和预分频值  
    EXIT4_Macro_PA4(); // 执行与PA4引脚相关的宏操作或初始化  
    ADC1_Init(); // 初始化ADC1  
  
    /* 初始化Led1~Led3为输出推挽模式 */  
    LED_Initialize(LED1_GPIO_PORT, LED1_GPIO_PIN | LED2_GPIO_PIN | LED3_GPIO_PIN | KEYWakeup_PIN);  
  
    /* 关闭Led1~Led3 */  
    LED_Off(LED1_GPIO_PORT, LED1_GPIO_PIN | LED2_GPIO_PIN | LED3_GPIO_PIN);  
    UART1_Init(115200); // 初始化UART1并设置波特率为115200  
  
    // LED_On(LED2_GPIO_PORT, LED2_GPIO_PIN | LED3_GPIO_PIN); // 打开Led2和Led3  
  
    /* 延时1秒 */  
    SysTick_Delay_Ms(1000);  
  
// ADC值采集:  
SysTick_Delay_Ms(1000); // 延时1000毫秒  
        ADC_Value = Get_ADC_Average(ADC_Channel_15_PB13,5); // 获取ADC通道15(PB13引脚)的5次平均值,并保存到ADC_Value中  
  
// 下面是数码管点亮:  
    LED_Initialize(LED1_GPIO_PORT, LED1_GPIO_PIN | LED2_GPIO_PIN | COM1_GPIO_PIN | SEG3_GPIO_PIN | SEG4_GPIO_PIN | SEG5_GPIO_PIN); // 初始化LED相关的GPIO端口,用于数码管显示  
    LED_Initialize(COM0_GPIO_PORT, COM0_GPIO_PIN | COM1_GPIO_PIN); // 初始化数码管的公共端GPIO端口  
    LED_Initialize(SEG0_GPIO_PORT, SEG0_GPIO_PIN | SEG1_GPIO_PIN | SEG2_GPIO_PIN | SEG6_GPIO_PIN); // 初始化数码管的段选端GPIO端口  
  
    /* 关闭Led1~Led3以及数码管的段选端 */  
    LED_Off(LED1_GPIO_PORT, LED1_GPIO_PIN | LED2_GPIO_PIN | COM0_GPIO_PIN | COM1_GPIO_PIN | SEG0_GPIO_PIN | SEG1_GPIO_PIN | SEG2_GPIO_PIN);  
    UART





高工
2024-04-17 22:14:38     打赏
2楼

感谢分享


专家
2024-04-17 22:17:52     打赏
3楼

感谢分享


专家
2024-04-18 00:21:19     打赏
4楼

感谢分享


专家
2024-04-18 08:14:08     打赏
5楼

感谢分享


菜鸟
2024-04-20 15:47:56     打赏
6楼

有要装电梯的找我,www.zblift.com


工程师
2024-04-22 09:58:41     打赏
7楼

学习了。谢谢分享。


助工
2024-04-26 15:12:18     打赏
8楼

那家公司的产品


专家
2024-05-18 23:51:09     打赏
9楼

学习了。谢谢分享


共9条 1/1 1 跳转至

回复

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