你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
Your UAT Feedback is needed within today.
5.18活动板子会不会是STM32L4呢
STM32隐藏
STM32 CUBE软件中找不到STM32L4系列单片机
应用
AAA
tiwen
BBBB
aaa
2222
#include <stdio.h>
#include <stm32f10x.h>
#include <string.h>
// 延时n毫秒
void delay(uint16_t nms)
{
TIM6->ARR = 10 * nms - 1;
TIM6->PSC = 7199;
TIM6->EGR = TIM_EGR_UG;
TIM6->CR1 = TIM_CR1_OPM | TIM_CR1_CEN;
while (TIM6->CR1 & TIM_CR1_CEN);
}
int fputc(int ch, FILE *fp)
{
if (fp == stdout)
{
if (ch == '\n')
{
while ((USART1->SR & USART_SR_TXE) == 0);
USART1->DR = '\r';
}
while ((USART1->SR & USART_SR_TXE) == 0);
USART1->DR = ch;
}
return ch;
}
int main(void)
{
char buf[20];
RCC->AHBENR |= RCC_AHBENR_FSMCEN;
RCC->APB1ENR = RCC_APB1ENR_TIM6EN;
RCC->APB2ENR = RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPDEN | RCC_APB2ENR_IOPEEN | RCC_APB2ENR_USART1EN;
GPIOA->CRH = 0x444444b3; // PA8为RST复位引脚(默认输出低电平), PA9为串口1发送引脚
GPIOB->CRL = 0xb4444444; // PB7为NADV, 取反后送到AS引脚上, 该引脚不可用地址线代替!
GPIOD->CRL = 0xb4bb44bb; // PD0~1为AD2~3, PD4为NOE接DS引脚, PD5为NWE接RW引脚, PD7为NE1片选引脚接CS
GPIOD->CRH = 0xbb444444; // PD14~15为AD0~1
GPIOE->CRL = 0xb4444444; // PE7为AD4
GPIOE->CRH = 0x44444bbb; // PE8~10为AD5~7
USART1->BRR = 625; // 串口波特率为115200
USART1->CR1 = USART_CR1_UE | USART_CR1_TE; // 串口1只允许发送
// FSMC的Bank1, Subbank1设为8位NOR Flash地址/数据线复用模式, 关闭NWAIT引脚
FSMC_Bank1->BTCR[0] &= ~(FSMC_BCR1_WAITEN | FSMC_BCR1_MWID);
// 下面为可选配置, 用于加快访存速度
// HCLK=72MHz时, DATAST的最小值为2, 即3xHCLK clock cycles
FSMC_Bank1->BTCR[1] = (FSMC_Bank1->BTCR[1] & ~(FSMC_BTR1_BUSTURN | FSMC_BTR1_DATAST | FSMC_BTR1_ADDHLD | FSMC_BTR1_ADDSET)) | FSMC_BTR1_DATAST_1 | FSMC_BTR1_ADDHLD_0;
printf("STM32F103VE FSMC DS12C887\n");
delay(200);
GPIOA->BSRR = GPIO_BSRR_BS8; // RESET=1, 撤销复位信号
// 读写自由SRAM区域
strcpy((char *)0x60000033, "This is a string!");
memcpy(buf, (char *)0x60000033, sizeof(buf));
printf("str=%s\n", buf);
// 读A~D寄存器
printf("A=0x%02x B=0x%02x C=0x%02x D=0x%02x\n", *(__IO uint8_t *)0x6000000a, *(__IO uint8_t *)0x6000000b, *(__IO uint8_t *)0x6000000c, *(__IO uint8_t *)0x6000000d);
while (1)
__WFI();
}
void HardFault_Handler(void)
{
printf("Hard Error!\n");
while (1);
}