前言:
现时大家对“net走马灯远吗”大体比较重视,咱们都需要了解一些“net走马灯远吗”的相关文章。那么小编同时在网络上汇集了一些对于“net走马灯远吗””的相关资讯,希望你们能喜欢,各位老铁们快快来学习一下吧!一、说明
本章节对前一篇内容进行适当修改,通过寄存器操作控制开发板8个LED灯点亮、熄灭。
二、项目架构三、源代码及说明1. 跑马灯
#include"stm32f10x.h"#include "stm32f10x_lib.h"#include<stdio.h>void SystemInit(){}// 简单的延迟操作void delay(u32 i){ while(i--);}void init(int position){ // 设置通用推挽输出 GPIOC_CRL &= ~(0x0f<<(4*position)); GPIOC_CRL |= (3<<4*position);}void on(int position){ GPIOC_BSRR = (1<<(16+position));}void off(int position){ GPIOC_BSRR=(1<<(position));}int main(void){ int diff=2; int j; // 打开GPIOC时钟 RCC_APB2ENR |= 1<<4; // 初始化8个引脚,全设置为熄灭 for(j=0;j<8;j++){ init(j); off(j); } while(1){ // 重复设置8个引脚 for(j=0;j<8;j++){ on(j); delay(0xfffff); off(j); delay(0xfffff); } }}2. 显示数值
#include"stm32f10x.h"#include "stm32f10x_lib.h"#include<stdio.h> void SystemInit(){}// 简单的延迟操作void delay(u32 i){ while(i--);}void init(int position){ // 设置通用推挽输出 GPIOC_CRL &= ~(0x0f<<(4*position)); GPIOC_CRL |= (3<<4*position);}/** 打开一个引脚*/void on(int position){ GPIOC_BSRR = (1<<(16+position));}/** 关闭一个引脚*/void off(int position){ GPIOC_BSRR=(1<<(position));}void onArray(int array[], int len){ int j; for(j=0;j<len;j++){ on(array[j]); }}void allOff(){ int j; for(j=0;j<8;j++){ off(j); }}void light1(){ int arr[] = {1, 2}; onArray(arr, 2);}void light2(){ int arr[] = {0,1,6,4,3}; onArray(arr, 5);}void light3(){ int arr[] = {0,1,6,2,3}; onArray(arr, 5);}void light4(){ int arr[] = {5,6,1,2}; onArray(arr, 4);}int main(void){ int diff=2; int j; // 打开GPIOC时钟 RCC_APB2ENR |= 1<<4; // 初始化8个引脚,全设置为熄灭 for(j=0;j<8;j++){ init(j); off(j); } while(1){ // 重复设置8个引脚 light1(); delay(0xfffff); allOff(); light2(); delay(0xfffff); allOff(); light3(); delay(0xfffff); allOff(); light4(); delay(0xfffff); allOff(); }}
效果:
这里对一些函数进行了初步的封装。下次看看能不能再封装一个函数,可以调用以后直接用来显示数字。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #net走马灯远吗