单片机
Ftworld21
专注游戏开发。
展开
-
USART接收中断
1. 发送数据不需要中断,但是接收数据需要利用中断来处理,这样效率比较高。2. 本实验设计为:上位机串口发送字符,单片机收到这些字符后,又向上位机转发过去。 CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE); USART_Init(USART1, 9600, USART_WordLength_8b, USART_Sto原创 2016-09-22 15:37:02 · 3080 阅读 · 0 评论 -
定时器中断
1. stm8l152定时器分为高级定时器,通用寄存器,和基本定时器,本实验用的是基本定时器TIM4.2. 本实验设计为利用定时器中断实现led灯的闪烁。 GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Slow); CLK_PeripheralClockConfig(CLK_Peripheral_原创 2016-09-21 19:49:16 · 928 阅读 · 0 评论 -
DAC
1. 模数转换的逆过程。2. 本实现设计为:设定一个值,从而改变某个引脚的电压值。 CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);//打开外设DAC时钟 CLK_PeripheralClockConfig(CLK_Peripheral_COMP, ENABLE);//打开外设比较器时钟,必须打开 // R原创 2016-09-27 00:53:22 · 1140 阅读 · 0 评论 -
段式液晶
1. stm8l152与stm8l151相比,多了一个液晶显示器。2. 读取电压值,然后再lcd上显示出来。 InitLCD(); u16 u16_adc1_value; u16 VoltageValue; CLK_PeripheralClockConfig (CLK_Peripheral_ADC1,ENABLE);//开启ADC/USART时钟原创 2016-09-27 23:09:26 · 934 阅读 · 0 评论 -
RTC
1. 实时时钟,以32.768kHz作为源时钟比较准确。2. 在lcd上显示时钟。 unsigned short temp1,temp2; CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);//RTC时钟使用LSE CLK_PeripheralClockConfig (CLK_Peripheral_原创 2016-09-27 23:22:02 · 634 阅读 · 0 评论 -
CH372
1. CH372是一款usb芯片。2. 没有实验现象? GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Slow);//GPIO初始化 GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_PU_IT);//初始化按键,GPB6上拉输入原创 2016-09-27 23:37:25 · 1560 阅读 · 0 评论 -
I2C
1. I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。2. 本实现设计为:先向E2PROM写一个数据,再读出这个数据,再向串口发送这个数据,看显示是否正确。 GPIO_Init(LED1_GPIO_PORT, LED1_GPIO_PINS, GPIO_Mode_Out_PP_Low_Slow);/原创 2016-09-27 00:32:45 · 566 阅读 · 0 评论 -
基础
1. 开发板以stm8l152k4为核心,开发需要用到data sheet、reference manual和库,可以去官网上下载。2. stm8l15x系列的芯片的features可以在data sheet上面获取。features:(1) 工作条件--电压1.8v到3.6v--温度-40度到85、105或125度(2) 低功耗特性--5种低功耗模式:等待模式、低功耗原创 2016-09-18 19:09:49 · 555 阅读 · 0 评论 -
RTC自动唤醒
stm8l152进入active halt模式后,可以通过RTC中断唤醒。首先切换为外部低速时钟源,然后对RTC进行一些配置。void RTC_Config(void)//设置RTC中断{ /* Select LSE as system clock source */ CLK_SYSCLKSourceSwitchCmd(ENABLE);原创 2016-10-17 17:21:07 · 13223 阅读 · 0 评论 -
内存
在IAR里面用c语言可以直接修改0地址的内容。参考资料http://blog.csdn.net/youoran/article/details/10990815http://blog.csdn.net/sygdp21/article/details/17420393http://bbs.elecfans.com/jishu_468424_1_1.html原创 2016-10-18 23:30:13 · 326 阅读 · 0 评论 -
外部中断
1. 外部中断的例子和io查询刚好对应起来,中断的效率明显高于查询。2. 本实验设计和io查询的例子一样,按一下按键,led灯亮灭一次。 GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Slow); GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_P原创 2016-09-25 11:24:27 · 725 阅读 · 0 评论 -
中断
锐志v2.0开发板有6个中断源:2个外部中断源,3个定时/计数器中断,1个串口中断。原创 2013-10-11 16:49:06 · 1013 阅读 · 0 评论 -
串行通信
串行通信主要设置的参数有:端口号,波特率,奇偶校验位,停止位,数据控制流。其中的波特率与定时器有关,所以要设置定时器。其实中断、定时/计数器和串行通信之间的关系很密切。原创 2013-10-10 22:39:39 · 670 阅读 · 0 评论 -
UART发送字符串
1. 与发送16进制的程序差不多,上个程序是给变量里面赋数字,这个程序是赋值字符,然后再一个一个往上位机发送就可以了。2. 把USB转串口和仿真器同时接上的时候,上位机可以正常接收,但是把仿真器去掉的时候,接收就不正常了。这是什么原因? char str[] = "Jimmy"; int i; CLK_PeripheralClockConfig(CLK_Peripheral_原创 2016-09-22 14:32:38 · 6080 阅读 · 0 评论 -
UART发送16进制
1. 程序下载好后要先断开仿真器,连上usb转串口,才能进行串口通信。2. 本实验设计为: 单片机不断发送数据,上位机接收数据 CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);//使能串口时钟 USART_Init(USART1, 9600, USART_WordLength_8b, USART_StopBits_1原创 2016-09-22 11:17:29 · 3735 阅读 · 0 评论 -
低功耗运行模式
1. cpu和部分外设运行,切换到低速时钟(内部或者外部),通过软件或者复位的方法退出该模式,所有的中断都被屏蔽。2. 本实验暂时没有明显的现象。 CLK_HSICmd(DISABLE);//关闭HSI等所有不使用的外设,ADC此模式下无效;关闭所有中断源 CLK_Config();//切换LSI为主时钟 //不使用的IO全部设置为输出低电原创 2016-09-25 16:03:26 · 1670 阅读 · 0 评论 -
时钟切换
1. 有2种时钟切换方法,自动切换和手动切换。2. 手动切换,程序在内部高速时钟下,控制led灯闪烁,当切换为低速时钟后,灯的闪烁速度应该变慢。理想情况下应该是这样的,但是没有切换过来。 GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Slow); for (i = 0; i {原创 2016-09-21 15:57:25 · 2169 阅读 · 0 评论 -
GPIO
1. 使用官方配置好的demo空工程,在main函数里面添加相关代码就能开始你的stm8l152之旅了。2. 首先从点亮led灯开始。查看核心板原理图,该开发板只有一个led灯,pd4脚为低电平时,led灯亮。(1) 库函数实现方式第一步,初始化pd4引脚GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Sl原创 2016-09-20 15:57:58 · 1283 阅读 · 0 评论 -
IAR,STVD和STVP的使用
1. IAR的使用2. STVD的使用http://blog.csdn.net/sy_lixiang/article/details/84618293. STVP的使用4. 相关的东西及区别http://blog.csdn.net/chuangwu2009/article/details/26050203http://www.stmcu.org/module/for原创 2016-09-20 20:25:13 · 5991 阅读 · 0 评论 -
IO轮询
1. 开发板资料给出了库例程和寄存器例程,纠结了很久到底是用库还是用寄存器来开发,其实都无所谓,选择适合自己的,要么寄存器,要么库,要么两种一起用。2. IO轮询这个例子目的是不断查询按键的状态,如果按下,则把led灯点亮。 GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Slow);GPIO_Init(KE原创 2016-09-21 10:12:05 · 1092 阅读 · 0 评论 -
ADC
1. AD采样通道有多种,比如光敏、电压值、温度等等。2. 本实验采集光敏通道的值,然后通过串口输出到上位机。 CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);// 开启串口时钟 CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);//开启ADC时钟原创 2016-09-25 09:47:07 · 695 阅读 · 0 评论 -
总结
1. 这一款kit比较垃圾,硬件有问题,给的例程也有问题,打算购买discovery。2. 有些例子只是看了一遍,没有真正的去做,回头再把没弄明白的地方搞懂。原创 2016-09-27 23:41:28 · 305 阅读 · 0 评论 -
芯片ID
1. stm8l152具有全球唯一的标识符,可以用来提高系统的安全性。2. 通过IAR的在线仿真,可以查看此标识符,代码如下:#define uIdAddress 0x4926 //芯片id号的首地址uint8_t uId[12] @ uIdAddress;void delayMs(int cnt){ int i, j; for (i = 0; i原创 2016-10-10 21:06:48 · 1930 阅读 · 0 评论 -
active-halt模式
1. 这种模式与halt模式的区别就是RTC是工作的,且可以使用RTC中断来唤醒,利用外部低速时钟作为时钟源。2. 本实验设计为:按键之后,led灯亮灭交替,要接外部时钟需要单独飞一根线接时钟源。void CLK_Config(void){ /* Select HSE as system clock source */ CLK_SYSCLKSourceSwitchC原创 2016-09-25 15:52:42 · 3000 阅读 · 0 评论 -
halt低功耗模式
1. stm8l152有5种低功耗模式,wait mode, low power run mode, low power wait mode, active-halt mode, halt mode.2. 在halt模式下,cpu和外设时钟停止,可以通过外部中断或者复位来唤醒。3. 本实验设计为:led灯亮,紧接着进入halt模式,有按键时,中断,快速唤醒,led灯灭。原创 2016-09-25 15:37:15 · 4778 阅读 · 0 评论 -
低功耗等待模式
1. 该模式在低功耗运行模式的基础上,通过wfe指令进入。指定的事件到达时,从该模式退出,进入低功耗等待模式。cpu停止工作,中断禁止。2. 本实验无明显现象 CLK_Config();//切换LSI为主时钟 CLK_HSICmd(DISABLE);//关闭HSI等所有不使用的外设,ADC在此模式下无效;关闭所有中断源 //不使用的IO全部原创 2016-09-25 16:11:19 · 1084 阅读 · 0 评论 -
WFE
1. 等待事件模式,cpu停止工作,外设和中断控制器继续工作。2. 等待的事件到达后,led灯反转。 CLK_Config();//切换LSI为主时钟 //不使用的IO全部设置为输出低电平 GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow); GPIO_Init(GPIOB, G原创 2016-09-25 16:21:08 · 954 阅读 · 0 评论 -
WFI
1. WFI与WFE的区别为,WFI等待的是中断,而WFE等待是事件,所以WFE不能进入中断服务函数,而WFI可以。2. 实验现象和WFE一样。 CLK_Config();//切换LSI为主时钟 //不使用的IO全部设置为输出低电平 GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);原创 2016-09-25 16:26:32 · 2251 阅读 · 0 评论 -
定时器/计数器
定时器一般是针对板子上的时钟源来说的,而计数器则用的是外部提供的方波等等。其实计数和定时的意思很相近,定时肯定需要计数。当计数器溢出的时候,也就是定时,这个时候就会产生一个中断。一个机器周期为1ms。原创 2013-10-10 22:30:53 · 758 阅读 · 0 评论