完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
这几天把rcc时钟搞明白了。其实主要是流程 看错了计算器1到31位,结果是错位了,一直找不到原因。
原来mac 自带编程计算器也是从0到31 stm32中文手册讲得比较明白 自己摸索下设置了串口发送数据 自己用的是蓝色药丸 (blue pill )淘宝10块不到一小块 stm32f103c8t6 led灯是portc 13脚 本程序全部是用寄存器方式设置 #include "stm32f10x_lib.h" #include #include "sys.h" //测试c++ class LED { public: LED(); ~LED(); }; void delay(void) { volatile unsigned int i; for( i = 0; i < 0x3fffff; ++i); } void delay_ms(void) { volatile unsigned int i; for( i = 0; i < 0x55; ++i); } void MY_NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset) { SCB->VTOR = NVIC_VectTab|(Offset & (u32)0x1FFFFF80);//设置NVIC的向量表偏移寄存器 //用于标识向量表是在CODE区还是在RAM区 } void MYRCC_DeInit(void) { RCC->APB1RSTR = 0x00000000;//复位结束 RCC->APB2RSTR = 0x00000000; RCC->AHBENR = 0x00000014; //睡眠模式闪存和SRAM时钟使能.其他关闭. //RCC->APB2ENR = 0x00000000; //外设时钟关闭. RCC->APB1ENR = 0x00000000; RCC->CIR = 0x00000000; //关闭所有中断 //RCC->APB2RSTR|=1<<4; //ADC1复位 //RCC->APB2RSTR&=~(1<<4); //配置向量表 MY_NVIC_SetVectorTable(0x08000000,0x0); } void ClockInit(u8 PLL) { unsigned char temp=0; MYRCC_DeInit(); //复位并配置向量表 RCC->CR|=(1<<16); //外部高速时钟使能HSEON while(!(RCC->CR>>17));//等待外部时钟就绪 RCC->CFGR=0x00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1; // RCC->CFGR &= (uint32_t)((uint32_t)~(0x00010000 | 0x00020000 |0x003C0000)); // RCC->CFGR |= (uint32_t)(0x00010000 | 0x001C0000); RCC->CFGR=0x1D0402;//0x1D2402;上面 用16位pllsrc是使用HSE时钟 17位是0 不分频 pllmul 111是0x1c 9倍频 FLASH->ACR|=0x32; //FLASH 2个延时周期 RCC->CR|=0x01000000; //PLLON while(!(RCC->CR>>25));//等待PLL锁定 RCC->CFGR|=0x00000002;//PLL作为系统时钟 while(temp!=0x02) //等待PLL作为系统时钟设置成功 { temp=RCC->CFGR>>2; temp&=0x03; } } void uart_init(u32 pclk2,u32 bound) { RCC->APB2ENR|=1<<2; //使能PORTA口时钟 RCC->APB2ENR|=1<<14; //使能串口时钟 GPIOA->CRH&=0XFFFFF00F;//IO状态设置 GPIOA->CRH|=0X000008B0;//IO状态设置 RCC->APB2RSTR|=1<<14; //复位串口1 RCC->APB2RSTR&=~(1<<14);//停止复位 //波特率设置 USART1->BRR=0x271; // 波特率设置 直接固化 如果总线是36 那波特率是57600 USART1->CR1|=0x200C; //1位停止,无校验位. } int main(void) { //Stm32_Clock_Init(9); ClockInit(9); /// RCC->APB2ENR |=(1<<14);//使能usart1 RCC->APB2ENR |=(1<<2);//使能PORTA口时钟 /* Infinite loop */ RCC->APB2ENR |=(1<<4); // 使能PORTC口的时钟 GPIOC->CRH|=0x100000;//pc13要用CRH 小8用CRL uart_init(72,115200); while(1) { delay(); GPIOC->ODR ^= (1<<13); for(char i=47;i<58;i++){ USART1->DR=i; while(((USART1->SR & 0x40)==0)); } USART1->DR=0x00; while(((USART1->SR & 0x40)==0)); //E6B189 汉 utf8编码 USART1->DR=0xE6; while(((USART1->SR & 0x40)==0)); USART1->DR=0xB1; while(((USART1->SR & 0x40)==0)); USART1->DR=0x89; while(((USART1->SR & 0x40)==0)); //输出回车和换行 USART1->DR=0x20; while(((USART1->SR & 0x40)==0)); USART1->DR=0x0a; while(((USART1->SR & 0x40)==0)); USART1->DR=0x0d; } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1877 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1661 浏览 1 评论
1145 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
760 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1720 浏览 2 评论
1963浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
790浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
612浏览 3评论
629浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
591浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-12 09:51 , Processed in 0.666981 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号