Estoy utilizando la placa de descubrimiento STM32VL (STM32f100rb6) .. Utilizando estos códigos, pero en el resultado no hay nada en el pin TX. systeminit ():
#include "stm32f10x.h"
#include "custom.h"
void SystemInit(void)
{
/* Enable HSI-RC Bit0->1 */
RCC->CR |= BIT0;
/* Set PLL Source As HSI/2 Bit 16->0 */
RCC->CFGR &= ~BIT16;
// Set PLLMUL to 6-> Bit 20 ->1 */
RCC->CFGR |= BIT20;
//Set SYSCLK Source As PLL bit 1 ->1
RCC->CFGR |= BIT1;
// Set AHB Prescalar to 8 bit[7:4]: 1010
//RCC->CFGR |= (BIT5 | BIT7);
/* Select HSI as System Clock */
//RCC->CFGR &= ~BIT0 & ~BIT1; // OR Nothing (Reset State)
/* Set AHPR prescalar as Bit7 ->0 */
//RCC->CFGR &= ~BIT7; //Or reset state
/* Set APB2 prescalar to 1 BIT13->0 */
//RCC->CFGR &= ~BIT13;
}
custom.h
#include <stdint.h>
#define BIT0 (uint32_t)0x1
#define BIT1 (uint32_t)0x2
#define BIT2 (uint32_t)0x4
#define BIT3 (uint32_t)0x8
#define BIT4 (uint32_t)0x10
#define BIT5 (uint32_t)0x20
#define BIT6 (uint32_t)0x40
#define BIT7 (uint32_t)0x80
#define BIT8 (uint32_t)0x100
#define BIT9 (uint32_t)0x200
#define BIT10 (uint32_t)0x400
#define BIT11 (uint32_t)0x800
#define BIT12 (uint32_t)0x1000
#define BIT13 (uint32_t)0x2000
#define BIT14 (uint32_t)0x4000
#define BIT15 (uint32_t)0x8000
#define BIT16 (uint32_t)0x10000
#define BIT17 (uint32_t)0x20000
#define BIT18 (uint32_t)0x40000
#define BIT19 (uint32_t)0x80000
#define BIT20 (uint32_t)0x100000
#define BIT21 (uint32_t)0x200000
#define BIT22 (uint32_t)0x400000
#define BIT23 (uint32_t)0x800000
#define BIT24 (uint32_t)0x1000000
#define BIT25 (uint32_t)0x2000000
#define BIT26 (uint32_t)0x4000000
#define BIT27 (uint32_t)0x8000000
#define BIT28 (uint32_t)0x10000000
#define BIT29 (uint32_t)0x20000000
#define BIT30 (uint32_t)0x40000000
#define BIT31 (uint32_t)0x80000000
USART.c
#include "uart.h"
#include "custom.h"
#include "stm32f10x.h"
void UART1_init(void)
{
/* Enable GPIOA's Clock from APB2, Bit2->1 */
RCC->APB2ENR |= BIT2;
/* UART1 : UART1_RX: PA10 -> input Floating: (GPIOA_CRH -> reset state so leave it)*/
/* UART1 : UART1_TX: PA9 -> alternate function push pull */
GPIOA->CRH |= BIT4 | BIT5; //Output mode 50Mhz
GPIOA->CRH |= BIT7; // Alternate function output Push-pull
//Enable UART
USART1->CR1 |= BIT13;
//OVER8=1
USART1->CR1 |= BIT15;
//Word Lenght 8 bit reset mode
//SET 1 STOP Bit reset mode
// BaudRate config (baudrate=1200)-fclk=24MHz
//OVER8=1->baurdate=(fclk)/(8*USARTDIV)
//DIV_Mantasia=2500; BRR=0b1001110001000000
USART1->BRR |= BIT15 | BIT12 | BIT11 | BIT10 | BIT6;
USART1->CR1 |= BIT3;
//Send
USART1->DR = 0b110011;
}
PA9 conectado al analizador lógico y este es el resultado:
También puse UART1_init();
line en main.c
por favor ayuda para encontrar el error.