中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

營銷型網(wǎng)站建設(shè)公司云服務(wù)器

營銷型網(wǎng)站建設(shè)公司,云服務(wù)器,高端ppt模板,深圳創(chuàng)紀(jì)錄暴雨19小時單片機GPIO中斷定時器 實現(xiàn)模擬串口接收 解決思路代碼示例 解決思路 串口波特率9600bps,每個bit約為1000000us/9600104.16us; 定時器第一次定時時間設(shè)為52us即半個bit的時間,其目的是偏移半個bit時間,之后的每104us采樣并讀取1bit數(shù)據(jù)。使得…

單片機GPIO中斷+定時器 實現(xiàn)模擬串口接收

  • 解決思路
  • 代碼示例

解決思路

串口波特率9600bps,每個bit約為1000000us/9600=104.16us; 定時器第一次定時時間設(shè)為52us即半個bit的時間,其目的是偏移半個bit時間,之后的每104us采樣并讀取1bit數(shù)據(jù)。使得采樣點搞好在每位數(shù)據(jù)脈寬的中間點。

在這里插入圖片描述

代碼示例

  • 串口波特率9600bps,每個bit約為1000000us/9600=104.16us;
  • 定時器開始時定時時間設(shè)為52us,即半個bit的時間,并關(guān)閉定時器;
  • GPIO設(shè)為中斷模式下降沿觸發(fā),測到第一個下降沿(即串口的S信號),定時器設(shè)定52us開啟定時,關(guān)閉GPIO中斷,并設(shè)置狀態(tài)為E_IO_UART_STATE_IDLE。
  • 定時器觸發(fā)52us定時E_IO_UART_STATE_IDLE狀態(tài)改為E_IO_UART_STATE_START。定時器設(shè)置為104us,之后每觸發(fā)一次104us定時中斷讀取1bit串口數(shù)據(jù),直到8bits數(shù)據(jù)全部解析完成,重置為下次接收狀態(tài);
#if TCFG_SENSOR_CO_MODULE_EN
struct io_uart_t {uint8_t state;uint8_t index;uint8_t _data;uint8_t ready;uint8_t rxlen;uint8_t _recv[7];
};
static struct io_uart_t io_uart;
void timer1_init(void);
#endif#if TCFG_SENSOR_CO_MODULE_EN
enum {E_IO_UART_STATE_IDLE=0,     // 空閑狀態(tài)E_IO_UART_STATE_START,      // 開始接收數(shù)據(jù)E_IO_UART_STATE_END,        // 數(shù)據(jù)接收完成
};#define TIMER1_TICK_HEAD         60  // 52us    104/2=52us  半個開始信號的時間
#define TIMER1_TICK_DATA         139 // 104us   1000000/9600=104.16us 一個數(shù)據(jù)位的時間
void timer1_init(void)
{SCCM1 |= RCC_SCCM1_TIMER1;TMOD  |=Bit5_En ;TMOD  &=Bit4_Dis;TH1=256-TIMER1_TICK_HEAD;        TL1=256-TIMER1_TICK_HEAD; TR1=0;        //定時器1使能運行EAL=1;        //總中斷打開ET1=1;        //定時器1中斷打開IRQ_Vic_Set(INT_TIMER1, pritrity_level_fourth);     // 設(shè)置定時器優(yōu)先級最高// IRQ_Enable(IT_ALL);
}void Interrupt_GPIO0 (void) interrupt 20    //GPIO0中斷服務(wù)程序
{// P07=~P07;if(IO_GetIntState(GPIO_P0,GPIO_Pin_6)){// P07=~P07;    // for test// TODO: 檢測到第一個下降沿:S信號,設(shè)置定時器初值52us,啟動定時器,關(guān)閉外部中斷TH1=256-TIMER1_TICK_HEAD;  TL1=256-TIMER1_TICK_HEAD;TR1=1;io_uart.state = E_IO_UART_STATE_IDLE;IO_INT_Disable(  GPIO_P0,GPIO_Pin_6);// IRQ_Disable(IT_GPIO0);IO_CleanIntState(GPIO_P0,GPIO_Pin_6);}P0_INT_REG = 0xff;
}/*中斷方式*/
void Interrupt_TIMRT1 (void) interrupt 3    //TIMRT1中斷服務(wù)程序
{	uint8_t checksum = 0;TF1 = 1; //清標(biāo)志// TIMER01_SetPeriod(TIMER1,TIMERMODE_VALUE,TIMER1_TICK);// P07=~P07;   // for testif (io_uart.state == E_IO_UART_STATE_START) {P07=~P07; // FOR TESTio_uart._data = io_uart._data >> 1; // 數(shù)據(jù)右移一位if (P06 == 1) { io_uart._data |= 0x80;    // 如讀取到的串口GPIO電平為高,高位位或運算}io_uart.index++;if (io_uart.index == 8) {io_uart.state = E_IO_UART_STATE_END;IO_INT_Enable(  GPIO_P0,GPIO_Pin_6);// IRQ_Enable(IT_GPIO0);TR1=0;if (io_uart._data == 0xAA) {io_uart.rxlen = 0;memset(io_uart._recv, 0, sizeof(io_uart._recv));}io_uart._recv[io_uart.rxlen] = io_uart._data;io_uart.rxlen++;if (io_uart.rxlen == 7){checksum = (uint8_t)(io_uart._recv[1]+io_uart._recv[2]+io_uart._recv[3]+io_uart._recv[4]);if (checksum == io_uart._recv[5]) {// TODO: 和校驗正確// P07=~P07;   // for test_this->sensor_co.covol = (uint16_t)(io_uart._recv[1]<<8 | io_uart._recv[2]);io_uart.ready = 1;}}}}if (io_uart.state == E_IO_UART_STATE_IDLE) {io_uart.state = E_IO_UART_STATE_START;io_uart.index = 0;io_uart._data = 0;TH1=256-TIMER1_TICK_DATA;        TL1=256-TIMER1_TICK_DATA;}
}
#endifvoid main ()
{
#if TCFG_SENSOR_CO_MODULE_ENtimer1_init();RCC_Sccm1_ClockCmd(RCC_SCCM1_GPIO,ENABLE);IO_FUN_Config(GPIO_P0,GPIO_Pin_7,GPIO_FUNCTION_DF0); //配置引腳為GPIO功能    	IO_OUT_Enable(GPIO_P0, GPIO_Pin_7);IO_PU_Enable(GPIO_P0, GPIO_Pin_7);// TOODO: 模擬串口接收/*只有P0和P1口可以配置為電平觸發(fā),其他端口只能配置為沿觸發(fā)*/IO_FUN_Config( 	GPIO_P0,GPIO_Pin_6,GPIO_FUNCTION_DF0); //配置引腳為GPIO功能IO_PU_Enable(   GPIO_P0,GPIO_Pin_6);IO_INPUT_Enable(GPIO_P0,GPIO_Pin_6);            //配置引腳為GPIO輸入模式IO_INT_Config(  GPIO_P0,GPIO_Pin_6, falling);	//需要外接接下拉電阻	IO_INT_Enable(  GPIO_P0,GPIO_Pin_6);IRQ_Enable(IT_GPIO0);
#endifwhile(1)
{...
}}
http://m.risenshineclean.com/news/60239.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)捌金手指下拉一南寧推廣軟件
  • 瓊海網(wǎng)站建設(shè)太原seo報價
  • 目前最火的自媒體平臺seo網(wǎng)站關(guān)鍵詞排名優(yōu)化公司
  • 做韓國網(wǎng)站有哪些東西嗎手機網(wǎng)站排名優(yōu)化軟件
  • 響應(yīng)式網(wǎng)站底部菜單欄廣州競價托管公司
  • 廣州網(wǎng)站建站房管局備案查詢網(wǎng)站
  • 用.net core 做網(wǎng)站公司企業(yè)網(wǎng)站建設(shè)
  • 新手學(xué)做網(wǎng)站的教學(xué)書百度怎么搜索圖片
  • 做導(dǎo)航網(wǎng)站賺錢嗎搜索推廣公司
  • 滿屏網(wǎng)站做多大尺寸網(wǎng)絡(luò)平臺建設(shè)及運營方案
  • 山西做網(wǎng)站的企業(yè)站長工具官網(wǎng)域名查詢
  • 公司網(wǎng)站做地圖地址互聯(lián)網(wǎng)推廣怎么找渠道
  • 商城網(wǎng)站建設(shè)預(yù)算要多少錢關(guān)鍵詞推廣方式
  • 網(wǎng)站標(biāo)簽怎么做自媒體引流推廣
  • 花瓣網(wǎng) 素材 圖庫響應(yīng)式網(wǎng)站 樂云seo品牌
  • 政府網(wǎng)站什么程序做的百度蜘蛛池自動收錄seo
  • 網(wǎng)站怎么做競價推廣珠海seo關(guān)鍵詞排名
  • 織夢網(wǎng)站案例企業(yè)網(wǎng)站推廣建議
  • 淘寶優(yōu)惠劵網(wǎng)站怎么做app制作一個需要多少錢
  • 長壽網(wǎng)站建設(shè)html網(wǎng)頁制作用什么軟件
  • 隨州公司做網(wǎng)站網(wǎng)址大全
  • 網(wǎng)站站外優(yōu)化網(wǎng)絡(luò)公司的推廣
  • 常州優(yōu)化網(wǎng)站網(wǎng)絡(luò)優(yōu)化主要做什么
  • 上杭網(wǎng)站定制最新網(wǎng)絡(luò)營銷方式有哪些
  • 武漢制作網(wǎng)站公司哪些行業(yè)適合做網(wǎng)絡(luò)推廣
  • 網(wǎng)站設(shè)計東莞微博付費推廣有用嗎
  • 剛做的單頁網(wǎng)站怎么預(yù)覽軟件培訓(xùn)機構(gòu)
  • 游戲網(wǎng)站建設(shè)一條龍濟南網(wǎng)站建設(shè)公司選濟南網(wǎng)絡(luò)
  • 網(wǎng)站開發(fā)維護者百度搜索風(fēng)云榜官網(wǎng)
  • 佛山最新通知今天大冶seo網(wǎng)站優(yōu)化排名推薦