We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
I got PCB where a Bluetooth modul is SMD mounted at USART2 and a STM32F103ZE T6 (High Density). I'm using Keil + cmsis + stlib3.5.0
I'm trying to get the BT Modul working. For that I need to see what the USART2 is echoing from my BT-Module and I have to write some AT-Commands to the USART2 from a debug window in keil (is that possible?)
Can anyone help me?
I started to do my retarget.c, it looks like this but i dont know if its correct or not:
#include <stdio.h> #include <rt_misc.h> #pragma import(__use_no_semihosting_swi) extern int SendChar (int ch); /* In Serial.c */ struct __FILE { int handle; /* Add whatever you need here */ }; FILE __stdout; int fputc (int ch, FILE *f) { return (SendChar(ch)); } int ferror (FILE *f) { /* Your implementation of ferror */ return EOF; } void _ttywrch (int ch) { SendChar(ch); } void _sys_exit (int return_code) { for (;;); }
and my stmdbg.ini for the ULINK2:
FUNC void DebugSetup (void) { _WDWORD(0xE0042004, 0x00000027); // DBGMCU_CR _WDWORD(0x40044064, 0x00000003); // Enable SWO on P0.9 } DebugSetup(); // Debugger Setup
and my serial.c
/******************************************************************************/ /* SERIAL.C: Low Level Serial Routines */ /******************************************************************************/ /* This file is part of the uVision/ARM development tools. */ /* Copyright (c) 2005-2007 Keil Software. All rights reserved. */ /* This software may only be used under the terms of a valid, current, */ /* end user licence from KEIL for a compatible version of KEIL software */ /* development tools. Nothing else gives you the right to use this software. */ /******************************************************************************/ #define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n))) #define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n))) #define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n))) #define DEMCR (*((volatile unsigned long *)(0xE000EDFC))) #define TRCENA 0x01000000 #include <stm32f10x_lib.h> /* STM32F10x Library Definitions */ /* Implementation of putchar (also used by printf function to output data) */ int SendChar (int ch) /* Write character to Serial Port */ { #ifdef DBG_ITM if (DEMCR & TRCENA) { while (ITM_Port32(0) == 0); ITM_Port8(0) = ch; } #else USART_SendData(USART2, (unsigned char) ch); while (!(USART2->SR & USART_FLAG_TXE)); #endif return (ch); } int GetKey (void) /* Read character from Serial Port */ { while (!(USART2->SR & USART_FLAG_RXNE)); return (USART_ReceiveData(USART2)); }
/////////////////////////////////////////////////////////////////////////////////// If anyone has something finshed please share or give some good adivce :)
with regards Sven