Stm32旧版库函数17——串口只发送数据 (三角波)

#include "stm32f10x_lib.h"
#include "usart.h"
#include "delay.h"
#include "sys_config.h"
#include  <math.h>    //Keil library  


#define   uchar unsigned char
#define   uint unsigned int    


  /*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
** 输    入    : 无
** 输    出    : 无
** 返    回    : 无
********************************************************************************
*/
int main(void)
{
  u8 data[10]={0,50,100,150,200,250,200,150,100,50};
  u8 i=0;
  RCC_Configuration();         //配置RCC
  GPIO_Configuration();         //配置GPIO
  USART1_Configuration();     //配置串口1
  Delayms(10);                 //延时
  while(1)
 {   
    for(i=0;i<10;i++)
    {
      USART1_SendData(data[i]);             
//    USART1_SendData(0X0D);     //换行
//    USART1_SendData(0X0A);     //回车
      Delayms(500);                 //延时    
    }

  }
}

#include "stm32f10x_lib.h"
#include "usart.h"
#include "delay.h"
/*
********************************************************************************
** 函数名称 : USART1_Configuration(void)
** 函数功能 : 串口1初始化
** 输    入    : 无
** 输    出    : 无
** 返    回    : 无
********************************************************************************
*/
void USART1_Configuration(void)
{

USART_InitTypeDef USART_InitStructure;
USART_ClockInitTypeDef  USART_ClockInitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 |RCC_APB2Periph_USART1, ENABLE  );

USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;            // 时钟低电平活动
USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;                // 时钟低电平
USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;                // 时钟第二个边沿进行数据捕获
USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;        // 最后一位数据的时钟脉冲不从SCLK输出
/* Configure the USART1 synchronous paramters */
USART_ClockInit(USART1, &USART_ClockInitStructure);                    // 时钟参数初始化设置
                                                                    
USART_InitStructure.USART_BaudRate =9600;                          // 波特率为:9600
USART_InitStructure.USART_WordLength = USART_WordLength_8b;              // 8位数据
USART_InitStructure.USART_StopBits = USART_StopBits_1;                  // 在帧结尾传输1个停止位
USART_InitStructure.USART_Parity = USART_Parity_No ;                  // 奇偶失能
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;    // 硬件流控制失能

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;          // 发送使能+接收使能
/* Configure USART1 basic and asynchronous paramters */
USART_Init(USART1, &USART_InitStructure);
    
  /* Enable USART1 */
USART_ClearFlag(USART1, USART_IT_RXNE);             //清中断,以免一启用中断后立即产生中断
USART_ITConfig(USART1,USART_IT_RXNE, ENABLE);        //使能USART1中断源
USART_Cmd(USART1, ENABLE);                            //USART1总开关:开启
}


 //************************************************
void  USART1_SendData(unsigned char SendData)
{
USART_SendData(USART1, SendData);
Delayms(1);
}


void Show_data_short(short k)    //显示两个有符号字节
{
  unsigned char a,b,c,d,e;
  if(k<0)
  {
    k=-k;
    USART1_SendData('-');
  }
  else
    USART1_SendData('+');
  e=k%10+0x30;
  d=(unsigned char)(( k/10 )%10)+0x30;
  c=(unsigned char)(( k/100 )%10)+0x30;
  b=(unsigned char)(( k/1000 )%10)+0x30;
  a=k/10000+0x30;
  USART1_SendData(a);
  USART1_SendData(b);
  USART1_SendData(c);
  USART1_SendData(d);
  USART1_SendData(e);
  USART1_SendData(' ');
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 基于STM32的函数信号发生器是一种能够产生各种函数波形信号的设备。它采用STM32系列微控制器作为主控芯片,具有较高的计算速度和稳定性,可以通过编程控制产生不同的信号波形。 基于STM32的函数信号发生器最基本的功能是产生正弦波、方波、三角波等常见的函数波形信号。通过设定参数,如频率、幅度和相位,可以产生不同频率和幅度的信号。此外,它还可以实现信号的频率调制和幅度调制,使产生的信号更加丰富和灵活。 在基于STM32的函数信号发生器设计中,需要使用相关的软件开发工具,如Keil、IAR或CubeMX等,编写相应的代码实现信号波形的生成和调节。根据不同的需求,可以选择不同的函数生成算法,如直接数字合成(DDS)、查表法或快速傅立叶变换(FFT)等,来实现信号的产生和处理。 此外,基于STM32的函数信号发生器还可以与外部设备进行通信,实现远程控制和数据传输。可以通过串口、以太网或无线通信等方式,与上位机或其他设备进行数据交互,使信号发生器具有更广泛的应用。 基于STM32的函数信号发生器具有体积小、功耗低、价格较为实惠等优点,广泛应用于科研、教育和工程领域。它可以满足不同领域对于信号源的需求,为实验和研究提供便利,同时也为创新和技术发展提供了良好的基础。 ### 回答2: 基于STM32的函数信号发生器是一种能够通过程序控制产生不同波形信号的设备。STM32是一款强大的32位微控制器系列,具有丰富的外设和高性能的处理能力,非常适合用来实现信号发生器的功能。 在该功能的实现过程中,首先需要使用STM32芯片的定时器模块来产生基准时钟信号。利用定时器的时钟源和分频器,可以得到一定频率的时钟脉冲信号。 然后,通过编程的方式,根据用户输入的参数,计算出每个时钟脉冲的幅值,并将其加载到DAC(数字模拟转换器)输出引脚上。DAC可以将数字信号转换为模拟信号,从而产生特定幅值的波形信号。 此外,为了实现不同的波形,还可以利用STM32的GPIO(通用输入输出)模块来产生不同的输出模式。例如,通过将GPIO配置为PWM(脉冲宽度调制)输出模式,可以产生方波信号。通过控制GPIO引脚输出高低电平并控制持续时间,也可以生成其他波形信号,如正弦波、三角波等。 最后,通过使用LCD显示模块,可以在屏幕上显示当前的波形类型、频率、幅值等参数。使用按钮或旋钮可以方便地调整这些参数。 总而言之,基于STM32的函数信号发生器通过利用芯片强大的计算和控制能力,结合定时器、DAC、GPIO等功能模块,能够灵活地产生各种类型、不同频率和幅值的波形信号,为实验、测试等应用提供了便利。 ### 回答3: 基于STM32的函数信号发生器是一种能够产生各种波形信号的设备。STM32是一种常用的嵌入式微控制器,具有高性能和丰富的外设资源,非常适合用于信号发生器的设计。 在实现函数信号发生器的过程中,我们首先需要基于STM32的开发平台搭建系统。通过使用STM32的GPIO(通用输入输出)和定时器,我们可以实现对外部电路的控制和时序控制。同时,我们可以使用STM32的ADC(模拟到数字转换器)模块,将外部输入信号进行采样,并通过定时器产生的中断来实现信号的输出控制。 在信号发生器的设计中,可以选择不同的波形生成算法,如正弦波、方波、三角波和锯齿波等。这些算法可以通过STM32的数学库函数来实现,或者使用查表法来获取波形的采样值。通过在固定的时间间隔内,按照采样值的顺序逐个输出,可以生成目标波形。 此外,我们还可以通过修改正弦波的频率、振幅和相位等参数,来实现更多种类的信号。通过更改定时器的时钟频率和参数设置,可以实现不同的输出频率。 在设计过程中,需要考虑到信号输出的精度和稳定性。通过使用STM32的时钟源和时钟校准功能,可以保证信号的输出精度。此外,合理选择电路的元件和阻抗匹配,可以减少信号的失真和干扰。 总之,基于STM32的函数信号发生器具有灵活性和可定制性。通过合理的设计和编程,可以实现各种类型和频率的波形信号,并能满足不同领域的应用需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fengyuzhe13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值