学习串口中断 和PWM波的简单实验
向串口发送 字符 输出对应占空比的PWM波
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "exti.h"
- #include "beep.h"
- #include "timer.h"
-
- /************************************************
- 点亮DS2
- 向串口一发送0-100三个字符
- TIM2 CH4 PA3口 输出对应占空比
- ************************************************/
- int main(void)
- {
- int x;
- u16 t;
- u16 len;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- LED_Init(); //LED灯初始化
- TIM2_PWM_Init(99,71);// 频率10Khz 周期100us
- LED1=0; //点亮DS1
- while(1)
- {
- if(USART_RX_STA&0x8000)//不懂
- {
- len=USART_RX_STA&0x3fff;//不懂
- for(t=0;t<len;t++)
- {
- USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
- while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
- }
- x=((USART_RX_BUF[0]-48)*100+(USART_RX_BUF[1]-48)*10+((USART_RX_BUF[2])-48)*1);// 把串口接受到的ASC码转换成十进制数
- printf("\r\n%d\n",x);//用串口1输出X的值 当向串口1发送的为三位字符时X才正确
- USART_RX_STA=0;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
串口输出对应占空比PWM.rar
(297.7 KB, 下载次数: 69)
|