深圳市宇丁电气有限公司软件编程规范(V1)
DEMO程序
概述
DEMO程序主要是为了熟悉芯片功能,方便使用人员更快了解IC基本情况,侧重于对芯片寄存器的设定,特殊功能的使用。
DEMO程序基本架构要满足我司框架要求。
芯片型号:APT32F101 SOP20
基本IO分布电路图:
基本标号范例:
IO_OUTP:表示此IO作正常高低电平输出;
IO_OUTO:表示此IO作OC门输出,即输出低有效;
IO_INAD:表示此IO作AD输入使用;
IO_INP:表示此IO作IC带内部上拉普通输入使用;
IO_INTK:表示此IO作感应按键输入使用;
IO分布原理图:
DEMO程序内容要求:
- 芯片资源使用情况说明:
PA08~PA013、PB03作IO普通输出口使用,输出高低电平,且是低频信号;
PA00作PWM输出使用,输出10kHz占空比为50%的PWM信号、高低电平;
PB02作为AD信号输入,电压范围0V~3V;
PA01 PA02 PB00作为带内部上拉输入信号口,输入低频高低电平信号,在芯片休眠模式下,PA02 PB00这两个IO
口为高电平,当由高到低变化且维持低电平时,将IC从休眠模式唤醒;
PB01 PA03~PA06作为TK输入口使用,在休眠模式下,其中PA05 PA06能唤醒芯片退出休眠模式;
当工作在非休眠模式时,使用到芯片内部资源有:AD转换、PWM输出、IO输入输出、感应按键TK采样、定时中断。
- 程序上电初始化要求说明:
芯片上电后,关闭看门狗,选择内部时钟做主频,
所有IO_OUTP设置为输出状态且输出信号为低电平,
其余输入IO_INAD IO_INTK IO_INP信号设置为输出如信号,其中IO_INP带上拉,另外的输入信号不带上拉。
继续初始化:清除RAM各变量为0
继续初始化:所有IO_OUTP输出信号为高电平
继续初始化:使能看门狗并让看门狗开始计时
继续初始化:IO_INAD设置为AD采样12BITS输入并开始采样
继续初始化:IO_INTK设置为感应按键输入,初始化后开始扫描所有按键
- 主程序要求说明:(main())
PB02的AD检测每10mS采样一次,结果存放到对应变量中,下次采样值覆盖这个变量内容。其中10mS的定时
来自于定时中断里面的10mS循环标志
PA01采样IO输入电平,当输入为高电平时PA00输出为高电平;当输入为低电平时PA00输出为PWM信号
PB00采样IO输入电平,当输入为高电平时PA013输出为高电平;当输入为低电平时,PA013输出为低电平
PA01、PB00的采样频率是软件main()每圈采样一次,并实时更新输出口状态。
按键(PB01 PA03~PA06)扫描:按键扫描频率为每10ms扫描一次,其中10mS的定时来自于定时中断里面的
10mS循环标志。当检测到有按键按下时,对应该按键的输出口为低电平,检测到没有按键时,对应该按键的输出口为高电平。对应关系如下:
PB01->PB03,PA03->PA08,PA04->PA09,PA05->PA10,PA06->PA011
进入休眠模式的条件,所有IO_INP(PA01、PA02、PB00)为高且所有IO_INTK(PB01 PA03~PA06)无按键按下,此状态维持0.5秒后即进入休眠状态,(休眠状态下,所有输出IO口输出为高电平);
退出休眠模式的条件,只要检测到IO_INP(PA01、PA02、PB00)有一个为低电平或者IO_INTK(PB05 PA06)有按键按下,即退出休眠状态,进入正常主程序工作。
- 定时中断程序说明:
定时中断每100uS进一次,每次进入累加定时变量,10mS后清零并置标志,标志供主程序使用并在主程序中清零。