完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、STM32F103C8T6简介
STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。 二、点灯 点亮LED灯,需要用到GPIO端口。 为了点亮LED灯,需要三个步骤:
(一)打开时钟
即0x40021018,则打开三个IO口的时钟需要将三个位都置1: #define RCC_APB2ENR (*(unsigned int *)0x40021018) // 打开时钟 RCC_APB2ENR |= (1<<3); // 打开 GPIOB 时钟 RCC_APB2ENR |= (1<<4); // 打开 GPIOC 时钟 RCC_APB2ENR |= (1<<2); // 打开 GPIOA 时钟 三、keil创建项目 1.新建uVision项目 2.选择合适位置命名保存 3.芯片选择STM32F103下的STM32F103C8 4.把startup_stm32f10x_md.s文件复制粘贴到刚才创建项目文件目录下,一般位于野火【STM32F103C8T6-核心板】资料/3-USART1接发/Libraries/CMSIS/startup/目录下 5.引入startup_stm32f10x_md.s 6.新建main.c文件 7.main.c代码 #define GPIOB_BASE 0x40010C00 #define GPIOC_BASE 0x40011000 #define GPIOA_BASE 0x40010800 #define RCC_APB2ENR (*(unsigned int *)0x40021018) #define GPIOB_CRL (*(unsigned int *)0x40010C00) #define GPIOC_CRH (*(unsigned int *)0x40011004) #define GPIOA_CRL (*(unsigned int *)0x40010800) #define GPIOB_ODR (*(unsigned int *)0x40010C0C) #define GPIOC_ODR (*(unsigned int *)0x4001100C) #define GPIOA_ODR (*(unsigned int *)0x4001080C) void SystemInit(void); void Delay_ms(volatile unsigned int); void Delay_ms( volatile unsigned int t) { unsigned int i; while(t--) for (i=0;i<800;i++); } int main(){ RCC_APB2ENR |= (1<<3); RCC_APB2ENR |= (1<<4); RCC_APB2ENR |= (1<<2); GPIOB_CRL |= (1<<0); GPIOB_CRL &= ~(0xE); GPIOC_CRH |= (1<<28); GPIOC_CRH &= ~(0xE0000000); GPIOA_CRL |= (1<<0); GPIOA_CRL &= ~(0xE); GPIOB_ODR |= (1<<0); GPIOC_ODR |= (1<<15); GPIOA_ODR |= (1<<0); while(1){ GPIOB_ODR &= ~(1<<0); Delay_ms(1000000); GPIOB_ODR |= (1<<0); Delay_ms(1000000); GPIOC_ODR &= ~(1<<15); Delay_ms(1000000); GPIOC_ODR |= (1<<15); Delay_ms(1000000); GPIOA_ODR &= ~(1<<0); Delay_ms(1000000); GPIOA_ODR |= (1<<0); Delay_ms(1000000); } } void SystemInit(){ } 四、连接电路 对于USB转TTL模块和stm32f103c8t6连接 五、编译烧录代码 (一)编译 1.选择Create hex文件 2.bulid生成.hex文件 3.生成成功 (二)烧录准备工作 1,下载CH341SerSetup.exe,并用管理员权限安装,加载USB串口驱动 2.下载FlyMcu.exe中其中一个方便烧录 (三)烧录程序 用FlyMcu进行烧录 (四)结果 七、总结 通过此次实验,我对stm32芯片各个串口输入输出,工作原理、寄存器地址等有了一定了解,编译实验过程中出现了多次困难,但都在室友的帮助和自己查阅资料下解决了。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4084 浏览 18 评论
1169浏览 3评论
602浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
593浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2331浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 18:48 , Processed in 1.186352 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号