介绍一个蓝牙小车的程序

发布者:温暖的微风最新更新时间:2021-02-23 来源: eefocus关键字:蓝牙小车  stm8  主程序 手机看文章 扫描二维码
随时随地手机看文章

简介:这个是这个蓝牙小车的主程序,单片机用的是stm8,希望对广大爱好智能车的朋友所帮助。


#include "iostm8s103k3.h"


#include "stm8s_uart1.h"


#include "stm8s.h"


void UART1_init(void);


unsigned char c;


void TIM2_Configuration_set(void)


{


TIM2_DeInit();//reset


TIM2_TimeBaseInit(TIM2_PRESCALER_8, 65535);//预分频8,自动重载值为1000


TIM2_SetCounter(100);//设置计时器初值为1000,以产生更新事件 TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);//开定时器中断 TIM2_Cmd(ENABLE);//计时器打开 }


void GPIO_Init_s(void)


{


GPIO_Init(GPIOB, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_6|GPIO_PIN_7,


GPIO_MODE_OUT_PP_LOW_FAST);


GPIO_Init(GPIOA, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_HIGH_FAST); GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST); GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);


}


void main()


{


disableInterrupts();


CLK_SWR=0XB4; //将HSE置为主时钟源


while(!(CLK_SWCR&0X08));//判断目标时钟源是否准备就绪 CLK_SWCR|=0X02; //=CLK_SWCR|0X02 while(CLK_SWCR&0X01) ; //判断时钟切换是否完成


UART1_init();


GPIO_Init_s();


enableInterrupts();


TIM2_Configuration_set();


while (1) {


while (!(UART1_SR & 0x20));//Loop until the UART1 Receive Data Register is not empty


c= UART1_DR;


}


}


void UART1_init(void)


{


UART1_CR1 = 0x00;//一个起始位,8个数据位.n个停止位 UART1_CR3= 0x00;//一个停止位


UART1_BRR2 = 0x00;//波特率9600


UART1_BRR1 = 0x68;


UART1_CR2= 0x04;//接收使能


}


#pragma vector=UART1_R_RXNE_vector __interruptvoid UART1_RX(void) { c = UART1_DR; // 接收到数据了 while(!UART1_SR_TXE);


}


#pragma vector=15 //TIM2的外部中断向量号是13,加上两个不可屏蔽中断是15__interrupt


void TIM2_IRQ(void)


{


//判断接受到的数据,然后小车运动


if(c==0x44)GPIO_WriteLow(GPIOA, GPIO_PIN_2); GPIO_WriteHigh(GPIOA, GPIO_PIN_1);


if(c==0x88) PB_ODR=0x88;


if(c==0x40) PB_ODR=0x40;


if(c==0x04) PB_ODR=0x04;


if(c==0x00) PB_ODR=0x00;


TIM2_SetCounter(100);//重新赋初值 TIM2_ClearITPendingBit(TIM2_IT_UPDATE); //清中断标志位


} //程序参数纠错


#ifdef USE_FULL_ASSERT


void assert_failed(u8*file,u32 line)


{


while(1)


{


}


}


#endif


关键字:蓝牙小车  stm8  主程序 引用地址:介绍一个蓝牙小车的程序

上一篇:IAR下STM8S207单片机各模块的无库例程
下一篇:电磁炉中电容式触控的原理

推荐阅读最新更新时间:2024-11-08 13:21

STM8S学习笔记之四(STM8 time1)
这几天一直纠结于使用STM8库还是用底层寄存器写程序,用了用IAR和库的搭配,方便时肯定的,但是呢,鉴于我现在工作使用的就是STM32的单片机+STM32库,考虑再三,我还是用底层吧,这样两个就可以互补了,既不会太依赖于库,又对寄存器的操作有更深的了解。。只是都是相通的,是的,相通的。。 以下是从技术手册上粘贴的: TIM1由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。 本章中使用i来代表1、2、3、4,分别对应于四个不同的捕获/比较通道。 高级控制定时器适用于许多不同的用途: ●基本的定时 ●测量输入信号的脉冲宽度(输入捕获) ●产生输出波形(输出比较
[单片机]
STM8学习笔记---PWM变频输出
在使用STM8的PWM功能时,一般都是改变占空比来改变输出电压大小。但是有时候不需要改变PWM的占空比,而是需要按照一定的规律改变输出PWM的频率,而占空比保持不变。现在总结一下如何实现STM8单片机输出PWM波时动态改变频率。 直接看C代码的实现 #include pwm.h u16 FRE = 100; //frequency 频率 4M / 100 = 40K void PWM_GPIO_Init( void ) { PC_DDR |= ( 1 7 ); //PC7 推挽输出 PC_CR1 |= ( 1 7 ); } void TIM1_Init( void ) { PWM_GP
[单片机]
<font color='red'>STM8</font>学习笔记---PWM变频输出
STM8开发记录二:UART RX空闲中断和DMA操作
一、用STM8L的时候,没能在同时读取Rx中断和IDLE中断标志,最后用DMA取数据,见 (三、DMA实现数据拷贝): 1.1 uart配置 void UsartConfig(void) { // USART_DeInit(USART1); /* Enable USART clock */ CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE); /* USART pin remap */ SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA, ENABLE); /* Configure USART
[单片机]
stm8 点亮第一个LED
第一步:配置时钟 上一讲的程序点亮LED灯并没有设置stm8的时钟,但是LED灯依然可以正常闪烁。为使系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟。因为HSI的稳定时间短,而8分频可保证系统在较差的VDD条件下安全启动。 一旦主时钟源稳定,用户程序可将主时钟切换到另外的时钟源。 果然一个厂家的,和stm32差不多。 stm8主时钟有四种时钟源: ● 1-24MHz高速外部晶体振荡器(HSE) ● 最大24MHz高速外部时钟信号(HSE user-ext) ● 16MHz高速内部RC振荡器(HSI) ● 128KHz低速内部RC(LSI) 各个时钟源可单独打开或关闭,从而优化功耗。 时钟相关寄存器
[单片机]
STM8 控制电脑风扇转速 4PIN PWM
程序代码: #include stm8s.h #include stm8s_gpio.h #define PWM_F 640 uint8_t HexTable ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; uint16_t CCR1_Val = 100; void DelayApi
[单片机]
<font color='red'>STM8</font> 控制电脑风扇转速 4PIN PWM
STM8-TIMER实现系统嘀嗒计时器
STM8中没有系统嘀嗒计时器,所以用timer实现系统嘀嗒计时器的功能,每1ms产生一个中断。本次使用的是高速内部时钟,时钟频率是2Mhz 1. timer.c #include timer.h void systic_init(void) // TIMER2_CH1 - PB0 { CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE); // 使能时钟 TIM2_DeInit(); // 恢复寄存器到默认值 TIM2_TimeBaseInit(TIM2_Prescaler_2, TIM2_CounterMode_Up, 1000);
[单片机]
意法半导体STM8微控制器销量破20亿大关
2016年4月6日,横跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST)宣布,其稳健且多用途STM8微控制器在突破销量十亿颗大关之后不到两年,又破二十亿颗大关,其中中国市场表现特别突出。 根据世界半导体贸易统计协会(WSTS,World Semiconductor Trade Statistics)的报告,在STM8微控制器快速增长的销量的推动下,意法半导体的通用微控制器市场份额从2013年的8.2%增至2015年的12.7%。意法半导体微控制器市场总监Daniel Colonna表示: STM8已成为市场上人气最高的微控制器,是我们市场战略的强固柱石。像我们所有的微控制器一
[单片机]
STM8 时基单元
STM8时基单元 时基单元包含: 16位向上/向下计数器 16位自动重载寄存器 重复计数器 预分频器 (图29:STM8 时基单元) 16位计数器,预分频器,自动重载寄存器和重复计数器寄存器都可以通过软件进行读写操作。自动重载寄存器由预装载寄存器和影子寄存器组成。 可在在两种模式下写自动重载寄存器: 自动预装载已使能(TIM1_CR1寄存器的ARPE位置位)。在此模式下,写入自动重载寄存器的数据将被保存在预装载寄存器中,并在下一个更新事件(UEV)时传送到影子寄存器。 自动预装载已禁止(TIM1_CR1寄存器的ARPE位清除)。在此模式下,写入自动重载寄存器的数据将立即写入影子寄存器。 更新事件的产生
[单片机]
<font color='red'>STM8</font> 时基单元
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved