首页 > 编程知识 正文

基于stm32的数字示波器设计,基于stm32的智能手环课程设计

时间:2023-05-05 15:19:53 阅读:175791 作者:1380

基于STM32的智能跟踪小车设计(基础)硬件准备1、基于小车的四直流电机(滑轮) ) )。

2、STM32F103C8T6核心板

3、12V 8700mAh锂电池(可以使用几种18650锂电池) ) )。

4、跟踪模块选择TCRT500L,五路合一,集成度高,可能比五个个别跟踪模块更容易使用

5、L298N电机驱动模块

四驱车为什么要用L298N电机驱动模块?

可以并联左边的两个电机,用输出a进行控制。 并联右侧的2个电机,由输出b控制。

只要将12V供电与电源正极连接,供电GND与电源负极连接,将核心板5V与跟踪模块5V连接,将核心板GND连接到跟踪模块GND,所有设备就可以供电了(最好设置几个开关,安全方便调试)

另外,最好触摸配线以免短路。

6、杜邦线、开关的几个软件设计1、电机调速通过输出PWM控制电机转速

PWM初始化(以A1为例) ) ) )。

void充实的篮球2_ch2_PWM_init(void ) gpio _ inittypedefgpio _ init structure; 充实的篮球_TimeBaseInitTypeDef充实的篮球_TimeBaseStructure; 丰满的篮球_OCInitTypeDef充实的篮球_OCInitStructure;//定义三个结构RCC _ AP B1 periphclockcmd (RCC _ AP B1 per iph _ 2,ENABLE ); RCC _ AP B2 periphclockcmd (RCC _ AP B2 per iph _ gpioa|RCC _ AP B2 per iph _ afio,ENABLE ); //相关时钟gpio _ init structure.gpio _ pin=gpio _ pin _ 1; gpio _ init structure.gpio _ mode=gpio _ mode _ af _ PP; gpio _ init structure.gpio _ speed=gpio _ speed _ 50m Hz; gpio_init(gpioa,GPIO_InitStructure ); //A1 GPIO初始化充实的篮球_TimeBaseStructure .充实的篮球_Period=199; 充实的篮球_TimeBaseStructure .充实的篮球_Prescaler=7199; 充实的篮球_TimeBaseStructure .充实的篮球_ClockDivision=0; 充实的篮球_TimeBaseStructure .充实的篮球_CounterMode=充实的篮球_CounterMode_Up; 充实的篮球_TimeBaseInit (充实的篮球2、充实的篮球_TimeBaseStructure ); //定时初始化充实的篮球_OCInitStructure .充实的篮球_OCMode=充实的篮球_OCMode_PWM1; 充实的篮球_OCInitStructure .充实的篮球_OutputState=充实的篮球_OutputState_Enable; 充实的篮球_OCInitStructure .充实的篮球_OCPolarity=充实的篮球_OCPolarity_Low; 充实的篮球_OC2Init (充实的篮球2、充实的篮球_OCInitStructure ); //计时通道是充实的篮球_OC2PreloadConfig (充实的篮球3、充实的篮球_OCPreload_Enable ); //预装值充实的篮球_Cmd (充实的篮球2,ENABLE ); //接通定时器}初始化结束后,输出PWM控制电机转速。 注意:充实的篮球_SetCompare2(充实的篮球2,n ); n越小,占空比越大,模拟转速越快。 在以下代码中,A1输出PWM占空比变大,与之对应的电机转速变快。 具体数据有多少,需要自己根据地点摸索,不断调试。

void left ()充实的篮球_SetCompare2)充实的篮球2,20 ); 充实的篮球_SetCompare3(充实的篮球2,120 ); } 2、跟踪模块检测GPIOB的初始化,同时将B4 B5 B6 B7 B8设置为上拉输入

void GPIOB_Init () gpio _ inittypedefgpio _ init structure; RCC _ AP B2 periphclockcmd (RCC _ AP B2 per iph _ gpiob,ENABLE ); gpio _ init structure.gpio _ pin=gpio _ pin _4| gpio _ pin _6| gpio _ pin _7| gpio _ pin gin //gpio _ init structure.gpio _ speed=gpio _ speed _ 50m Hz; gpio_init(gpiob,GPIO_InitStructure ); )宏定义、少量打印、B4 B5 B6 B7 B8分别对应L1 L2 M R2 R1

# define L1 gpio _ readinputdatabit (gpiob,GPIO_Pin_4) define L2 gpio _ readinputdatabit (gpiob,gpio _ pin _5gpin )

voidread_date(void ) { L1; L2; m; R2; R1; } 3、主函数(通过读入的跟踪数据控制电机)用愚蠢但直接的方式排列了所有的情况。

思路:如果检测到L1,它必须是bigright; 如果检测到R1,则其必须是双左;

中间的三个人,还有八种。 列举这8种就可以了。

int main () systick_init ) 72; nvic _ prioritygroupconfig (nvic _ priority group _ 2; usart1_init(9600; GPIOB_Init (; 充实的篮球2_CH2_PWM_Init (; 充实的篮球2_CH3_PWM_Init (; wile(1) {Read_Date; if(L1==0L2==0m==0R2==0R1==0) { go; dlay_ms(10; }if(L1==0L2==1m==1R2==1R1==0) ) go ); dlay_ms(10; (if ) L1==0L2==0m==1R2==0R1==0) ) go ); dlay_ms(10; (if ) L1==0L2==1m==0R2==0R1==0) ) { right; dlay_ms(10; (if ) L1==0L2==0m==0R2==1R1==0) ) { left; dlay_ms(10; (if ) L1==0L2==1m==1R2==0R1==0) ) { right ); dlay_ms(10; (if ) L1==0L2==1m==0R2==1R1==0) ) go ); dlay_ms(10; (if ) L1==0L2==0m==1R2==1R1==0) ) { left; dlay_ms(10; (if ) R1==1) { bigleft; dlay_ms(10; (if ) L1==1) ) { bigright; dlay_ms(10; }}项目文件已上载到资源。 2分即可下载。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。