Registrieren    Anmelden    Forum    Superkato.net



Ein neues Thema erstellen Auf das Thema antworten  [ 2 BeitrĂ€ge ] 
Autor Nachricht
 Betreff des Beitrags: STM32 printf Debug USART/UART/USB
 Beitrag Verfasst: Mo Sep 03, 2012 10:54 pm 
Offline
Site Admin
Benutzeravatar

Registriert: Fr Sep 30, 2011 4:06 pm
BeitrÀge: 49
Wohnort: Hessen
Um eine einfache Debug Ausgabe mit der uart bzw. usart am STM32 zu realiseren mach einfach
ein printf / putchar via uart oder usb:

1. Initialisiere deine UARTx
2. Übernimm diese main.c und ergĂ€nze den Header:
voila

ohne DMA , ohne Interrupt

Code:
/**
  ******************************************************************************
  * @file    main.c
  * @author  EGĂŒ
  * @version V1
  * @date    29.08.2012
  * @brief   Main program body
  */ 
 
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "main.h"
#include <stdio.h>
/* Private constants ---------------------------------------------------------*/
char ReceivedData = NULL;
/* Private function prototypes -----------------------------------------------*/
#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
   set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/* Main Routine ---------------------------------------------------------*/
int main(void)
{
SystemInit();
  /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */
  RCC_APB2PeriphClockCmd(  RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC
              | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE );
 
 
  UARTInit();
    while(1) {
    printf("TEST TEST TEST ");
      }
  }
 
void UARTInit()
{
  /* USARTx configured as follow:
        - BaudRate = 115200 baud 
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - Hardware flow control disabled (RTS and CTS signals)
        - Receive and transmit enabled
  */
  USART_InitTypeDef USART_InitStructure;
  USART_InitStructure.USART_BaudRate = 115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_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;
  COMInit(USART2, &USART_InitStructure); //bei dir heißt das anders! 
}


/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the USART */
  USART_SendData(USART2, (uint8_t) ch);

  /* Loop until the end of transmission */
  while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
  {}

  return ch;
}

#ifdef  USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t* file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif



main.h

Code:
/**
  * @file    main.h
  * @author  EGĂŒ
  */

#ifndef __MAIN_H_
#define __MAIN_H_


#ifdef __cplusplus
extern "C" {
#endif


void UARTInit(void);


#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H_ */




Hoffe das ich helfen konnte!


Nach oben 
 Profil  
 
 Beitrag Verfasst: Sa Sep 15, 2012 1:19 pm 
Offline
Site Admin
Benutzeravatar

Registriert: Fr Sep 30, 2011 4:06 pm
BeitrÀge: 49
Wohnort: Hessen
Hört sich interessant an. Könntest du ein Codebeispiel posten?


Nach oben 
 Profil  
 
BeitrĂ€ge der letzten Zeit anzeigen:  Sortiere nach  
 
Ein neues Thema erstellen Auf das Thema antworten  [ 2 BeitrĂ€ge ] 


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 GĂ€ste

 
 

 
Sie dĂŒrfen keine neuen Themen in diesem Forum erstellen.
Sie dĂŒrfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dĂŒrfen Ihre BeitrĂ€ge in diesem Forum nicht Ă€ndern.
Sie dĂŒrfen Ihre BeitrĂ€ge in diesem Forum nicht löschen.
Sie dĂŒrfen keine DateianhĂ€nge in diesem Forum erstellen.

Gehe zu:  
cron