完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32最简单的外设莫过于IO口的高低电平控制了, Proteus仿真STM32F103R6的跑马灯程序。
一、原理图 二、跑马灯C程序 // 粗略延时函数 static void delay(unsigned int n) { for(unsigned int i=0; i for(unsigned int j=0; j<1024; j++) { for(unsigned int k=0; k<1024; k++) { __asm("nop"); } } } } int main(void) { // 使能GPIOB端口时钟 // RCC起始地址:0X40021000 // RCC_APB2ENR偏移地址:0X18 *(unsigned int *)(0X40021000 + 0X18) |= (1 << 3); // 配置IO口为输出模式 // CNFy[1:0]: 00 - 通用推挽输出模式 // MODEy[1:0]:01 - 输出模式,最大速度10MHz for(unsigned int i=0; i<8; i++) { // GPIOB起始地址:0X40010C00 // GPIOx_CRL偏移地址:0X00 *(unsigned int *)(0X40010C00 + 0X00) |= (1 << (4*i+0)); *(unsigned int *)(0X40010C00 + 0X00) &= ~(1 << (4*i+1)); *(unsigned int *)(0X40010C00 + 0X00) &= ~(1 << (4*i+2)); *(unsigned int *)(0X40010C00 + 0X00) &= ~(1 << (4*i+3)); } // 设置IO口为高电平,关闭LED灯 // GPIOB起始地址:0X40010C00 // GPIOx_ODR地址偏移:0X0C *(unsigned int *)(0X40010C00 + 0X0C) |= 0xFF; while(1) { for(unsigned int i=0; i<8; i++) { // 设置IO口为低电平,打开LED灯 // GPIOB起始地址:0X40010C00 // GPIOx_ODR地址偏移:0X0C *(unsigned int *)(0X40010C00 + 0X0C) &= ~(1 << i); delay(1); // 设置IO口为高电平,关闭LED灯 // GPIOB起始地址:0X40010C00 // GPIOx_ODR地址偏移:0X0C *(unsigned int *)(0X40010C00 + 0X0C) |= (1 << i); delay(1); } } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:41 , Processed in 0.718116 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号